最近のアクセス:
新しい WhatsApp パートナーを GeneXus Chatbot に統合する方法

ここでは、ナレッジベースConversational Flows オブジェクトを新しい WhatsApp プロバイダーに統合する方法を説明します。
一部の WhatsApp パートナーについては、ソリューションが既に GeneXus に組み込まれています(例: Twilio、Botmaker)。詳細については、「Chatbot で WhatsApp を使用する方法」を参照してください。このソリューションは、統合したい任意のパートナー向けに拡張することができます。ここではその方法を示します。
ここでは例として MessageBird を使用していますが、ほとんどの WhatsApp プロバイダーが同じ仕組みになっていて、主に次の 2 つの機能を備えています。
  1. Webhook の URL のプレースホルダー 
  2. ユーザーへのメッセージを投稿する Web (REST) API
イメージ:46272.png
最初に Webhook を作成します。この Webhook は、WhatsApp の番号にメッセージが届くたびに WhatsApp プロバイダーから呼び出されます。
ほとんどの場合、プロバイダーは、届く可能性のあるすべての構造について定めたドキュメントがあります。これがなかった場合は、Webhook に届く内容を記録し、そこから必要な Structured Data Type (SDT) オブジェクトを作成できます。
プロシージャーを作成し、[ Call protocol ] プロパティを HTTP に設定します。次に [ Main program ] プロパティを True に設定して、プロシージャーを実行できるようにします。
このプロシージャーの 1 行目で、実際の本文を取得します。プロバイダーは、リクエストの本文を使用することもあれば、パラメーターを URL パラメーターとして送信することもあります。HttpRequest オブジェクトを使用すると、送信される内容を把握できます。
&body = &HttpRequest.ToString()
このペイロードの処理に必要な構造化データタイプが既にある場合は、この SDT のインスタンスを作成してロードできます。
&MessageBirdRequest.FromJson(&body)
これで完了です。プロバイダーから送信されたデータを含む構造が既にあります。これは、ユーザーが WhatsApp 経由で送信したものです。
次に、このテキストへの応答をどうするかを考えます。そのためには、SendMessageFromChannel プロシージャーを呼び出します。
SendMessageFromChannel(&MessageBirdRequest.message.content.text, &MessageBirdRequest.message.from,"CitizenEnergyService", &AnalyzeResponse)
最初のパラメーターはメッセージのテキスト、つまり、ユーザーが実際に WhatsApp で入力した内容です。2 つ目のパラメーターは、このユーザーを識別する情報です。この場合はユーザーの電話番号を使用できます。その次に ConversationalFlows インスタンスの名前、AnalyzeResponse SDT のインスタンスと続きます。
AnalyzeRensponse インスタンスには、Conversational Flow モデルに従って送信する必要があるテキスト (GXResponse コレクション) があります。
for &gxresponse in &AnalyzeResponse.GXResponse
    if &i <> 0
        &ReplySDT.content.text += NewLine()
    endif
    &i += 1
    &ReplySDT.content.text += &gxresponse.GXOutput
endfor

第 2 段階として、ユーザーに返信します。そのためには、WhatsApp プロバイダーが提供する API に対して HTTP リクエストを作成する必要があります。
ほとんどのプロバイダーは、API を呼び出す方法を示すサンプルを用意しています。GeneXus では、cURL インスペクターを使用できます。これを使用すると、cURL コマンドのサンプルを再現するために必要なコードを含むプロシージャーを作成できます。
この例の場合、次のサンプルが提供されます:
curl -X "POST" "https://conversations.messagebird.com/v1/send" -H "Authorization: AccessKey YOUR-API-KEY" -H "Content-Type: application/json" --data '{ "to":"+31XXXXXXXXX", "from":"WHATSAPP-CHANNEL-ID", "type":"text", "content":{ "text":"Hello!"}, "reportUrl":"https://example.com/reports" }'
GeneXus の cURL インスペクターを使用した後、次のコードが生成されます:
&HttpClient.AddHeader(!"Authorization", !"AccessKey YOUR-API-KEY")
&HttpClient.AddHeader(!"Content-Type", !"application/json")

&HttpClient.AddString('{ "to":"+31XXXXXXXXX", "from":"WHATSAPP-CHANNEL-ID", "type":"text", "content":{ "text":"Hello!"}, "reportUrl":"https://example.com/reports" }')

&HttpClient.Execute(!"POST", !"https://conversations.messagebird.com/v1/send")
API キーを含めるだけですが、そのキーはソースコードとは別に保存し、カスタム SDT で送信できるように JSON をパラメーター化することをお勧めします。
cURL インスペクターがない場合は、コードを自分で記述する必要があります。
以上です。SendMessageFromChannel を呼び出した後、この新たに生成されたプロシージャーを自分のデータで呼び出すことができます。
コードの xpz ファイルはこちらからダウンロードできます:
MessageBirdXPZ

参考情報

Whatsapp を使用して Chatbot 用に Twilio をセットアップする方法
Whatsapp を使用して Chatbot 用に Botmaker をセットアップする方法


サブページ
Created: 22/03/14 00:47 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0