国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ WeChat アプレット WeChatの開発 Web API を使用して WeChat パブリック アカウントを開発し、Turing ロボット インターフェイスを呼び出す方法

Web API を使用して WeChat パブリック アカウントを開発し、Turing ロボット インターフェイスを呼び出す方法

Mar 24, 2017 pm 02:23 PM
WeChatの開発

受動(dòng)的応答メッセージ (XML を返す)

WeChat では XML データを返す必要があり、その形式は指定されています。詳細(xì)については、

WeChat パブリック プラットフォームの開発者ドキュメントを參照してください。

要件は XML 形式であるため、応答エンティティ クラスはすでに作成済みです。
ここでは、Microsoft が提供する System.Xml.Serialization.XmlSerializer を使用して、データを XML にシリアル化します。
そこで、クラスの XmlRoot 屬性、列挙型フィールドの XmlEnum 屬性、NewsMsg の記事リストの XmlArray 屬性と XmlArrayItem 屬性をマークしました。その後逆シリアル化されるのは、WeChat で必要な形式になります。

シリアル化方法は次のとおりです:

public string ResponseXML(object value, Type type){
    StringWriter sw = new StringWriter();
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();

    ns.Add("", "");  //去除命名空間
    XmlSerializer serializer = new XmlSerializer(type);

    serializer.Serialize(sw, value, ns);    return sw.ToString();
}

注: ここで XML 名前空間を削除する必要があります。削除しないと WeChat が認(rèn)識(shí)しません

完全な方法が示されています:

public HttpResponseMessage Post(){    var requestContent = Request.Content.ReadAsStreamAsync().Result;    //從正文參數(shù)中加載微信的請求參數(shù)
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(requestContent);

    logger.DebugFormat("WX請求XML內(nèi)容:{0}", xmlDoc.InnerText);    string msgTypeStr = xmlDoc.SelectSingleNode("xml/MsgType").InnerText;    string userName = xmlDoc.SelectSingleNode("xml/FromUserName").InnerText;    string efhName = xmlDoc.SelectSingleNode("xml/ToUserName").InnerText;    string responseContent;
    MsgType msgType;    
    //獲取消息類型,若未定義,則返回。
    if (!Enum.TryParse(msgTypeStr, true, out msgType))
    {           
        responseContent = MsgService.Instance.ResponseXML(new TextMsg
            {
                FromUserName = efhName,
                MsgType = MsgType.Text,
                Content = "俺還小,不知道你在說啥子(⊙_⊙)?",
                CreateTime = UnixTimestamp.Now.ToNumeric(),
                ToUserName = userName
            }, typeof(TextMsg));        return new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new StringContent(responseContent, Encoding.UTF8, "application/xml"),
        };
    }    if (msgType == MsgType.Event)
    {        return ProcessEvent(xmlDoc, userName, efhName);
    }    
    //圖靈消息轉(zhuǎn)換為微信響應(yīng)消息,下一節(jié)奉上
    string content = xmlDoc.SelectSingleNode("xml/Content").InnerText;    var requestResult = TuLingService.Instance.GetMsgFromResponse(content, userName, efhName);

    responseContent = MsgService.Instance.ResponseXML(requestResult.Data, requestResult.DataType);    return new HttpResponseMessage(HttpStatusCode.OK)
    {
        Content = new StringContent(responseContent, Encoding.UTF8, "application/xml"),
    };
}private HttpResponseMessage ProcessEvent(XmlDocument xmlDoc, string userName, string efhName){    string eventValue = xmlDoc.SelectSingleNode("xml/Event").InnerText;    var responseContent = MsgService.Instance.ResponseXML(new TextMsg
    {
        FromUserName = efhName,
        MsgType = MsgType.Text,
        Content = eventValue.ToLower().Equals("subscribe") ? "lei好哇~" : "大爺,奴家會(huì)想你的",//其實(shí)取消訂閱是不會(huì)發(fā)送消息的
        CreateTime = UnixTimestamp.Now.ToNumeric(),
        ToUserName = userName
    }, typeof(TextMsg));    return new HttpResponseMessage(HttpStatusCode.OK)
    {
        Content = new StringContent(responseContent, Encoding.UTF8, "application/xml"),
    };
}

この時(shí)點(diǎn)で、 WeChat の受動(dòng)的応答メッセージ。

Turing メッセージと WeChat メッセージのマッピング

メッセージに受動(dòng)的に返信する機(jī)能を?qū)g裝しました。次に、Turing ロボット インターフェイスをパブリック プラットフォームに関連付ける必要があります。

チューリング ロボットから返されたパラメーターを分析したところ、すべての種類のコンテンツにコード パラメーターとテキスト パラメーターがあることがわかりました。そして、TuringのメッセージをWeChatの応答メッセージに直接対応させる必要があるため、インターフェースを定義し、変換メソッドを提供します

public class TuLingResult{    //消息類型(我們在序列化為XML的時(shí)候需要提供類型)
    public Type DataType { get; set; }    public object Data { get; set; }
}public interface IResponse{    TuLingResult ToTuLingResult(string fromUserName, string toUserName);
}

Turingメッセージ(WeChatのテキストメッセージに相當(dāng))の基本クラスとしてテキストデータの実體を作成します

public class TextResult : IResponse{    public int Code { get; set; }    public string Text { get; set; }    public virtual TuLingResult ToTuLingResult(string fromUserName, string toUserName)    {        return new TuLingResult
        {
            DataType = typeof(TextMsg),
            Data = new TextMsg
             {
                 FromUserName = fromUserName,
                 ToUserName = toUserName,
                 Content = Text,
                 CreateTime = UnixTimestamp.Now.ToNumeric(),
                 MsgType = MsgType.Text
             }
        };
    }
}

ではさまざまなデータのエンティティクラスを順番に作成します。
例: ニュース (WeChat グラフィック メッセージに対応)

public class NewsResult : TextResult{    public List<NewsInfo> List { get; set; }    public override TuLingResult ToTuLingResult(string fromUserName, string toUserName)    {        if (List.Count > 10)
        {
            List = List.Take(10).ToList();
        }        return new TuLingResult
        {
            DataType = typeof(NewsMsg),
            Data = new NewsMsg
            {
                FromUserName = fromUserName,
                ToUserName = toUserName,
                ArticleCount = List.Count,
                Articles = List.Select(m => new MsgNewsInfo
                {
                    Title = m.Article,
                    Description = m.Source,
                    Url = m.DetailUrl,
                    PicUrl = m.Icon
                }).ToList(),
                CreateTime = UnixTimestamp.Now.ToNumeric(),
                MsgType=MsgType.News
            }
        };
    }
}public class NewsInfo{    /// <summary>
    /// 標(biāo)題
    /// </summary>
    public string Article { get; set; }    /// <summary>
    /// 來源
    /// </summary>
    public string Source { get; set; }    /// <summary>
    /// 詳情地址
    /// </summary>
    public string DetailUrl { get; set; }    /// <summary>
    /// 圖標(biāo)地址
    /// </summary>
    public string Icon { get; set; }
}

同様に、Turing Robot によって提供されるさまざまなデータ エンティティ クラスを作成します

サポートするデータ エンティティが定義されたら、Turing インターフェイスのリクエストを開始して、実は、ここでは HttpClient を使用して実裝しています。

private const string TULING_API_URL = "http://www.tuling123.com/openapi/api";private const string TULING_API_KEY = "XXXXX";//圖靈的APIKEYpublic TuLingResult GetMsgFromResponse(string keyword, string userFlag, string efhName){    string linkString = string.Format("{0}?key={1}&info={2}&userid={3}"
        , TULING_API_URL, TULING_API_KEY, keyword, userFlag);    string content = string.Empty;    using (HttpClient client = new HttpClient())
    {
        HttpResponseMessage response = client.GetAsync(linkString).Result;

        content = response.Content.ReadAsStringAsync().Result;
        logger.DebugFormat("圖靈機(jī)器人響應(yīng):{0}", content);
    }    return ConvertToMsg(content, userFlag, efhName);
}

Turing はコード識(shí)別メッセージ タイプとエラー情報(bào)を返すため、最初に応答メッセージを TextResult に解析し、Turing タイプを取得します。

まず、チューリング戻りコード

public enum ResultType
{
    TL_FORMAT_DATA = 50000,
    TL_TEXT_DATA = 100000,
    TL_LINK_DATA = 200000,
    TL_NOVEL_DATA = 301000,
    TL_NEWS_DATA = 302000,
    TL_APP_DATA = 304000,
    TL_TRAIN_DATA = 305000,
    TL_AIRPORT_DATA = 306000,
    TL_TUAN_DATA = 307000,
    TL_TUWEN_DATA = 308000,
    TL_HOTEL_DATA = 309000,
    TL_LOTTERY_DATA = 310000,
    TL_PRICE_DATA = 311000,
    TL_RESTAURANT_DATA = 312000,

    TL_ERROR_LENGTH = 40001,
    TL_ERROR_EMPTY = 40002,
    TL_ERROR_INVALID = 40003,
    TL_ERROR_OUTLIMIT = 40004,
    TL_ERROR_NOTSUPPORT = 40005,
    TL_ERROR_SERVERUPDATE = 40006,
    TL_ERROR_SERVERERROR = 40007
}

に対応するチューリング型列挙型

100000  文本類數(shù)據(jù)
200000  網(wǎng)址類數(shù)據(jù)
301000  小說
302000  新聞
304000  應(yīng)用、軟件、下載
305000  列車
306000  航班
307000  團(tuán)購
308000  優(yōu)惠
309000  酒店
310000  彩票
311000  價(jià)格
312000  餐廳
40001   key的長度錯(cuò)誤(32位)
40002   請求內(nèi)容為空
40003   key錯(cuò)誤或帳號(hào)未激活
40004   當(dāng)天請求次數(shù)已用完
40005   暫不支持該功能
40006   服務(wù)器升級(jí)中
40007   服務(wù)器數(shù)據(jù)格式異常
50000   機(jī)器人設(shè)定的“學(xué)用戶說話”或者“默認(rèn)回答”

を定義し、次にメッセージ型

private ResultType GetResultType(string response)
{
    var result = JsonConvert.DeserializeObject<TextResult>(response);

    return (ResultType)result.Code;
}

を取得すると、さまざまな型に従って対応する TuLingResult を返すことができます。

public TuLingResult ConvertToMsg(string response, string userFlag, string efhName)
{
    IResponse result = null;

    var resultType = GetResultType(response);    switch (resultType)
    {        case ResultType.TL_TEXT_DATA:
            result = JsonConvert.DeserializeObject<TextResult>(response);            break;        case ResultType.TL_LINK_DATA:
            result = JsonConvert.DeserializeObject<LinkResult>(response);            break;        case ResultType.TL_NEWS_DATA:
            result = JsonConvert.DeserializeObject<NewsResult>(response);            break;        case ResultType.TL_TUWEN_DATA:
            result = JsonConvert.DeserializeObject<TuWenResult>(response);            break;        case ResultType.TL_TRAIN_DATA:
            result = JsonConvert.DeserializeObject<TrainResult>(response);            break;        case ResultType.TL_AIRPORT_DATA:
            result = JsonConvert.DeserializeObject<AirportResult>(response);            break;        case ResultType.TL_APP_DATA:
            result = JsonConvert.DeserializeObject<AppResult>(response);            break;        case ResultType.TL_HOTEL_DATA:
            result = JsonConvert.DeserializeObject<HotelResult>(response);            break;        case ResultType.TL_PRICE_DATA:
            result = JsonConvert.DeserializeObject<PriceResult>(response);            break;        case ResultType.TL_ERROR_LENGTH:
        case ResultType.TL_ERROR_INVALID:
        case ResultType.TL_ERROR_EMPTY:
        case ResultType.TL_ERROR_OUTLIMIT:
            result = new TextResult { Text = "您的輸入有誤" };            break;        case ResultType.TL_ERROR_SERVERERROR:
        case ResultType.TL_ERROR_SERVERUPDATE:
            result = new TextResult { Text = "服務(wù)器忙,暫時(shí)無法為您提供服務(wù)" };            break;        case ResultType.TL_ERROR_NOTSUPPORT:
            result = new TextResult { Text = "俺還小,您說的這個(gè)還得慢慢學(xué)習(xí),以后再來試吧" };            break;
        default:
            result = new TextResult { Text = "俺還小,不知道你在說啥子(⊙_⊙)?" };            break;
    }    return result.ToTuLingResult(efhName, userFlag);
}

その後、取得したTuLingResultのデータをWeChatで必要なXMLにシリアル化できます

var requestResult = TuLingService.Instance.GetMsgFromResponse(content, userName, efhName);

responseContent = MsgService.Instance.ResponseXML(requestResult.Data, requestResult.DataType);return new HttpResponseMessage(HttpStatusCode.OK)
{
    Content = new StringContent(responseContent, Encoding.UTF8, "application/xml"),
};

以上がWeb API を使用して WeChat パブリック アカウントを開発し、Turing ロボット インターフェイスを呼び出す方法の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP WeChat 開発: メッセージの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法 PHP WeChat 開発: メッセージの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法 May 13, 2023 am 11:40 AM

PHP は、Web 開発およびサーバーサイド プログラミング、特に WeChat 開発で広く使用されているオープン ソースのスクリプト言語です?,F(xiàn)在、ますます多くの企業(yè)や開発者が WeChat 開発に PHP を使用し始めています。これは、PHP が本當(dāng)に學(xué)びやすく、使いやすい開発言語となっているためです。 WeChat の開発では、メッセージの暗號(hào)化と復(fù)號(hào)化はデータのセキュリティに関わるため、非常に重要な問題となります。暗號(hào)化と復(fù)號(hào)化の方法を持たないメッセージの場合、ハッカーは簡単にデータを入手でき、ユーザーに脅威を與える可能性があります。

PHP WeChat開発:投票機(jī)能の実裝方法 PHP WeChat開発:投票機(jī)能の実裝方法 May 14, 2023 am 11:21 AM

WeChat パブリック アカウントの開発では、投票機(jī)能がよく使用されます。投票機(jī)能はユーザーが気軽に交流に參加できるほか、イベントの開催や意見調(diào)査などにも重要なツールです。この記事では、PHPを使用してWeChatの投票機(jī)能を?qū)g裝する方法を紹介します。 WeChat公式アカウントの認(rèn)証を取得する まずはWeChat公式アカウントの認(rèn)証を取得する必要があります。 WeChatパブリックプラットフォームでは、WeChatパブリックアカウント、公式アカウント、およびパブリックアカウントに対応するトークンのAPIアドレスを設(shè)定する必要があります。 PHP言語を使用した開発の過程では、WeChatが公式に提供するPHを使用する必要があります

PHP を使用して WeChat マス メッセージング ツールを開発する PHP を使用して WeChat マス メッセージング ツールを開発する May 13, 2023 pm 05:00 PM

WeChat の人気に伴い、マーケティング ツールとして WeChat を使用し始める企業(yè)が増えています。 WeChat グループ メッセージング機(jī)能は、企業(yè)が WeChat マーケティングを行うための重要な手段の 1 つです。ただし、手動(dòng)送信のみに頼ると、マーケターにとって非常に時(shí)間と労力がかかる作業(yè)になります。したがって、WeChat マス メッセージング ツールを開発することが特に重要です。この記事では、PHP を使用して WeChat マス メッセージング ツールを開発する方法を紹介します。 1. 準(zhǔn)備作業(yè) WeChat マス メッセージング ツールを開発するには、次の技術(shù)點(diǎn)を習(xí)得する必要があります。 PHP WeChat パブリック プラットフォーム開発の基礎(chǔ)知識(shí) 開発ツール: Sub

PHP WeChat 開発: カスタマー サービスのチャット ウィンドウ管理を?qū)g裝する方法 PHP WeChat 開発: カスタマー サービスのチャット ウィンドウ管理を?qū)g裝する方法 May 13, 2023 pm 05:51 PM

WeChat は現(xiàn)在、世界最大のユーザーベースを持つソーシャル プラットフォームの 1 つであり、モバイル インターネットの普及に伴い、ますます多くの企業(yè)が WeChat マーケティングの重要性を認(rèn)識(shí)し始めています。 WeChat マーケティングを?qū)g施する場合、顧客サービスは重要な部分です。カスタマー サービスのチャット ウィンドウをより適切に管理するために、WeChat 開発に PHP 言語を使用できます。 1. PHP WeChat 開発の概要 PHP は、Web 開発の分野で広く使用されているオープン ソースのサーバー側(cè)スクリプト言語です。 WeChat パブリック プラットフォームが提供する開発インターフェイスと組み合わせると、PHP 言語を使用して WeChat を?qū)g行できます。

PHP WeChat 開発: ユーザータグ管理を?qū)g裝する方法 PHP WeChat 開発: ユーザータグ管理を?qū)g裝する方法 May 13, 2023 pm 04:31 PM

WeChat パブリック アカウントの開発において、ユーザー タグ管理は非常に重要な機(jī)能であり、開発者がユーザーをよりよく理解し、管理できるようになります。この記事では、PHPを使用してWeChatのユーザータグ管理機(jī)能を?qū)g裝する方法を紹介します。 1. WeChat ユーザーの openid を取得する WeChat ユーザータグ管理機(jī)能を使用する前に、まずユーザーの openid を取得する必要があります。 WeChat パブリック アカウントの開発では、ユーザーの承認(rèn)を通じて openid を取得するのが一般的です。ユーザー認(rèn)証が完了したら、次のコードを通じてユーザーを取得できます。

PHP WeChat 開発: グループ メッセージ送信レコードの実裝方法 PHP WeChat 開発: グループ メッセージ送信レコードの実裝方法 May 13, 2023 pm 04:31 PM

WeChat が人々の生活においてますます重要なコミュニケーション ツールになるにつれ、その機(jī)敏なメッセージング機(jī)能はすぐに多くの企業(yè)や個(gè)人に支持されるようになりました。企業(yè)にとって、WeChat をマーケティング プラットフォームとして開発することがトレンドになっており、WeChat 開発の重要性が徐々に顕著になってきています。その中でも、グループ送信機(jī)能はさらに広く使用されているため、PHP プログラマとしてグループ メッセージ送信レコードを?qū)g裝するにはどうすればよいでしょうか?以下に簡単に紹介します。 1. WeChat パブリック アカウントに関する開発知識(shí)を理解する グループ メッセージ送信レコードの実裝方法を理解する前に、

PHP を使用して WeChat パブリック アカウント開発を?qū)g裝する手順 PHP を使用して WeChat パブリック アカウント開発を?qū)g裝する手順 Jun 27, 2023 pm 12:26 PM

PHP を使用して WeChat 公開アカウントを開発する方法 WeChat 公開アカウントは、多くの企業(yè)にとってプロモーションと交流のための重要なチャネルとなっており、一般的に使用される Web 言語として PHP を使用して WeChat 公開アカウントを開発することもできます。この記事では、PHP を使用して WeChat 公開アカウントを開発する具體的な手順を紹介します。ステップ1:WeChat公式アカウントの開発者アカウントを取得する WeChat公式アカウントの開発を開始する前に、WeChat公式アカウントの開発者アカウントを申請する必要があります。具體的な登録プロセスについては、WeChat パブリック プラットフォームの公式 Web サイトを參照してください。

WeChat 開発に PHP を使用するにはどうすればよいですか? WeChat 開発に PHP を使用するにはどうすればよいですか? May 21, 2023 am 08:37 AM

インターネットとモバイル スマート デバイスの発展に伴い、WeChat はソーシャルおよびマーケティング分野に欠かせないものになりました。デジタル化が進(jìn)むこの時(shí)代において、WeChat 開発に PHP を使用する方法が多くの開発者の焦點(diǎn)になっています。この記事では主に、PHP を WeChat 開発に使用する方法とそのヒントや注意事項(xiàng)を紹介します。 1. 開発環(huán)境の準(zhǔn)備 WeChat を開発する前に、まず対応する開発環(huán)境を準(zhǔn)備する必要があります。具體的には、PHP オペレーティング環(huán)境と WeChat パブリック プラットフォームをインストールする必要があります。

See all articles