ユーザーが WeChat 公開アカウントに積極的にメッセージを送信すると (メッセージの送信、カスタム メニューのクリック イベント、サブスクリプション イベント、QR コードのスキャン イベント、支払い成功イベント、ユーザー権利保護を含む)、WeChat はメッセージ データを開発開発者にプッシュします。一定期間 (現在 48 時間) 内にカスタマー サービス メッセージ インターフェイスを呼び出し、JSON データ パケットを POST して一般ユーザーにメッセージを送信できます。48 時間以内の送信回数に制限はありません。このインターフェイスは、開発者がより良いサービスを提供できるように、手動のメッセージ処理が必要なカスタマー サービスなどの機能に主に使用されます。
カスタマーサービスインターフェース呼び出しリクエストの説明
カスタマーサービスインターフェース呼び出しのインターフェース説明は次のとおりです (http リクエストメソッドは POST) アクセストークンを取得したい場合は、前の説明を参照してください:
https ://api.weixin.qq.com/ cgi-bin/message/custom/send?access_token=[ACCESS_TOKEN]
カスタマー サービス インターフェイスは、想像力の余地を大きく提供します。たとえば、エンタープライズ カスタマー サービス ソリューションを開発できます。これに基づいて、ユーザーが WeChat パブリック アカウントにサポート リクエストを送信すると、カスタマー サービス スタッフはこの情報を受信し、Web ページ、モバイル アプリケーション、WeChat などを通じてさらに処理することができます。カスタマー サービス スタッフも待機するか、設定することができます。ユーザーの VIP レベルに応じて、さまざまなレベルのサービス応答速度を提供するなど、非常にインテリジェントな顧客サービス サポート システムを構築します。
ユーザーにテキストメッセージを送信します
ユーザーにテキストメッセージを送信する場合、送信されるデータ形式は次のとおりです:
{ "touser":"OPENID", "msgtype":"text", "text": { "content":"Hello World" } }
このうち、各パラメータの具体的な説明は次のとおりです:
Force.com でユーザにテキストを送信する メッセージのコード実装は次のとおりです:
Http h = new Http(); HttpRequest req = new HttpRequest(); req.setMethod('POST'); req.setHeader('Accept-Encoding','gzip,deflate'); req.setHeader('Content-Type','text/xml;charset=UTF-8'); req.setHeader('User-Agent','Jakarta Commons-HttpClient/3.1'); String sendMsg = '{ "touser":"ou-37t936RNZEcW0mI75RN2pdxkc", "msgtype":"text", "text": { "content":"测试客服消息" } }'; req.setBody(sendMsg); req.setEndpoint('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=bW3aubvd1GVgDZbrO6zv1WGVYIU0QlEhI1J5x_NpbiouxyBc8eufzQQHHyy8cMoZmuQknz-_iEgSB76CggVTgQ’); String bodyRes = ''; try{ HttpResponse res = h.send(req); bodyRes = res.getBody(); } catch(System.CalloutException e) { System.debug('Callout error: '+ e); ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, e.getMessage())); } );
上記のコードを実行すると、結果は図に示すようになります:
画像メッセージをユーザに送信する
ユーザーにグラフィックメッセージを送信する場合、送信されるデータ形式は次のとおりです:
{ "touser":"OPENID", "msgtype":"image", "image": { "media_id":"MEDIA_ID" } }
ここで、各パラメータの具体的な説明は次のとおりです:
画像のメディア ID は、後で取得する必要があります。 Tencent のマルチメディア ファイルのアップロード インターフェイスを介して画像をアップロードする。この例の具体的な例は、後の「マルチメディア ファイルのアップロードとダウンロード」の例で説明します。
ユーザーに音声メッセージを送信します
ユーザーに音楽を送信する場合、データ形式は次のとおりです:
{ "touser":"OPENID", "msgtype":"voice", "voice": { "media_id":"MEDIA_ID" } }
このうち、各パラメータの具体的な説明は次のとおりです:
画像は Tencent のマルチメディアを介してアップロードする必要があります。これは、ファイル インターフェイスを介して画像をアップロードした後に取得されます。他のコードはテキスト メッセージの送信と変わらないため、ここでは詳しく説明しません。
ユーザーに音声メッセージを送信します
ユーザーにビデオを送信するためのメッセージ形式は次のとおりです:
{ "touser":"OPENID", "msgtype":"video", "video": { "media_id":"MEDIA_ID", "thumb_media_id":"MEDIA_ID", "title":"TITLE", "description":"DESCRIPTION" } }
このうち、各パラメータの具体的な説明は次のとおりです:
メディアビデオの ID は、Tencent のマルチメディア ファイルを介してアップロードする必要があります。これは、インターフェイスを介して画像をアップロードした後に取得されます。その他のコードはテキスト メッセージの送信と変わらないため、ここでは詳しく説明しません。
ユーザーに音楽メッセージを送信する
ユーザーに音楽を送信するためのメッセージの形式は次のとおりです:
{ "touser":"OPENID", "msgtype":"music", "music": { "title":"MUSIC_TITLE", "description":"MUSIC_DESCRIPTION", "musicurl":"MUSIC_URL", "hqmusicurl":"HQ_MUSIC_URL", "thumb_media_id":"THUMB_MEDIA_ID" } }
その中で、各パラメータの具体的な説明は次のとおりです:
ユーザーにグラフィックメッセージを送信する
画像を送信するには段落を投稿してください。テキスト メッセージのコードは次のとおりです:
Http h = new Http(); HttpRequest req = new HttpRequest(); req.setMethod('POST'); req.setHeader('Accept-Encoding','gzip,deflate'); req.setHeader('Content-Type','text/xml;charset=UTF-8'); req.setHeader('User-Agent','Jakarta Commons-HttpClient/3.1'); String sendMsg = '{"touser":"ou-37t936RNZEcW0mI75RN2pdxkc","msgtype":"news","news":{"articles":[{"title":"HappyDay","description":"IsReallyAHappyDay","url":"http://www.36kr.com/p/212479.html","picurl":"http://a.36krcnd.com/photo/2014/4e3ae0dac4884bb91934a689b72f8f8b.png"}]}}'; req.setBody(sendMsg); req.setEndpoint('https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=bW3aubvd1GVgDZbrO6zv1WGVYIU0QlEhI1J5x_NpbiouxyBc8eufzQQHHyy8cMoZmuQknz-_iEgSB76CggVTgQ’); String bodyRes = ''; try{ HttpResponse res = h.send(req); bodyRes = res.getBody(); } catch(System.CalloutException e) { System.debug('Callout error: '+ e); ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.FATAL, e.getMessage())); } );
Force.com WeChat 開発シリーズのカスタマー サービス インターフェイスに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。