2016-07-26 1 views
0

をポストバックアクションコードを実装する方法:ここでどこに私の質問は、私のチャットボットにJavaScriptコードのこのスニペットの実施に関するれるjavascriptチャットボットに

smooch.conversations.sendMessage('app_5790dca8cab9a256005c0148', { 
    text: 'Fabric', 
    role: 'appMaker', 
    actions: [ 
     { 
     type: 'postback', 
     text: 'fabric instructions', 
     payload: 'egg_fabric' 
     } 
    ] 
}).then(() => { 
    // async code 
}); 

は、この特定のポストバックに対応して、私のscript.jsonファイルです:私はチャットを通じて複数の「表面」と「ファブリック」のボタンを持つようにしたいが、私はボットが質問に対応するように吐き出す答えは最近尋ねたいので

"HOW CAN I REMOVE AN EGG STAIN?": "%[Fabric](postback:egg_fabric) %[Surface](postback:egg_surface)", 

私はこの質問を求めています理由は、 。ご協力いただきありがとうございます!

答えて

0

あなたが探しているものは、script.jsonでこれを行うことはできません。独自の状態関数をscript.jsで定義し、独自のポストバックイベント処理を定義する必要があります。

this answerには、smooch-bot-exampleプロジェクト(これはestherbotがフォークされたものです)でこれを行う方法に関するいくつかの提案があります。

script.jsはコンテキストを提供するために、実際のボットロジックが存在する場所です。あなたが見ているscript.jsonは、estherbotで導入されたショートカットで、キーワードベースのボットを簡単に定義できます。あなたのボットが動くとき、JSONは最初にscript.jsで定義されているかのように実際に状態にコンパイルされます。構築しようとしているのは、script.jsonが制限されているstaticキーワード - >ビヘイビアマッピング以上のものが必要です。上記のアンドリューの答えにフォローアップ

0

:代わりに、ボット、ロジック/フロー定義ファイルの

smooch-bot-exampleプロジェクトをチェックし、多分ポストバックのためのウェブフックの実装ファイルを調べて開始(Herokuの/ index.js)( script.js)ファイル:

のherokuフォルダ内でindex.jsファイルを確認してください。関数handlePostback(req, res)(109行目にあるはずです)を使い始めるとよいでしょう。例えば。

function handlePostback(req, res) { 
    const postback = req.body.postbacks[0]; 
    if (!postback || !postback.action) { 
     res.end(); 
    } 

    const sAction = postback.action.text; 
    const sPayload = postback.action.payload; 

    switch (sAction) { 
    case "egg_fabric": 
     //something something 
     break; 
    case "egg_surface": 
     //something something 
     break;   
    default: 
     //something something 
    } 
} 

希望に役立ちますような何かに

function handlePostback(req, res) { 
    const postback = req.body.postbacks[0]; 
    if (!postback || !postback.action) { 
     res.end(); 
    } 
    createBot(req.body.appUser).say(`You said: ${postback.action.text} (payload was: ${postback.action.payload})`) 
    .then(() => res.end()); 
} 

:から

:このような何かに変更します。

関連する問題