ボットでコードスニペットを実行する

ボットを作成または編集する際には、通常の[+]をクリックしてアクションを追加することで、コードスニペットを追加できます。アクション選択パネルで、[コードスニペットを実行]をクリックします。run-a-code-snippet-2

次に、アクションにニックネームを付けます。コード編集ペイン内に、Node.js 10.xの既定のテンプレートが表示されます。「イベント」オブジェクト、および利用可能なレスポンスオブジェクトの形式については、以下で詳しく説明します。run-a-code-snippet-editor

コミュニケーション内の保存済みアクションに到達すると、このコードが起動されます。

コードスニペットの使用については、主に次の3つの点に留意してください。

  • コードスニペットのアクションが実行されると、exports.main()関数が呼び出されます。
  • event引数は、訪問者とチャットセッションの詳細を格納するオブジェクトです。
  • callback()関数は、ボットとユーザーにデータを返すために使用します。この関数は、exports.main関数内で呼び出す必要があります。

eventオブジェクトには、以下のデータが格納されます。

//example payload { "userMessage": { // Details for the last message sent to your bot "message": "100-500", // The last message received by your bot, sent by the visitor "quickReply": { // If the visitor selected any quick reply options, this will be a list of the selected options. // Will be 'null' if no options were selected. "quickReplies":[ // A list of quick reply options selected by the visitor { "value":"100-500", "label":"100-500" } ], }, "session": { "vid": 12345, // The contact VID of the visitor, if known. "properties": { // A list of properties collected by the bot in the current session. "CONTACT": { "firstname": { "value": "John", "syncedAt": 1534362540592 }, "email": { "value": "testing@domain.com", "syncedAt": 1534362541764 }, "lastname": { "value": "Smith", "syncedAt": 1534362540592 } } }, "customState":{myCustomCounter: 1, myCustomString:"someString"} // Only present if it customState was passed in from a previous callback payload } }

データをボットに返送するには、callback()関数を使用します。引数としては、次のデータを格納するオブジェクトが必要です。

//sample payload { "botMessage": "Thanks for checking out our website!", // This is the message your bot will display to the visitor. "quickReplies": [{ value:'option', // Passed to the bot as the response on click label:'Option' // Gets displayed as the button label }], // the quickReplies object is optional "nextModuleNickname": "SuggestAwesomeProduct", // The nickname of the next module the bot should execute. If undefined, the bot will follow the default configured behavior "responseExpected": false // If true, the bot will display the returned botMessage, wait for a response, then execute this code snippet again with that new response. "customState":{myCustomCounter: 1, myCustomString:"someString"} // Optional field to pass along to the next step. }

制限事項

ボット内のコードスニペットは20秒以内に実行を完了する必要があり、使用するメモリーは128 MBのみです。これらの制限に違反すると、エラーが発生します。

使用可能なライブラリー

コードスニペット内では、広く利用されている次のNode.jsライブラリーを使用できます。

ライブラリーは、コードの最上部で通常のrequire()関数を使用することでを読み込むことができます。

const request = require('request'); exports.main = (event, callback) => { request('http://time.jsontest.com/', function (error, response, body) { const responseJson = { "botMessage": "The current time in GMT is " + JSON.parse(body).time, "responseExpected": false } callback(responseJson); }); };

参考になりましたか?
こちらのフォームではドキュメントに関するご意見をご提供ください。HubSpotがご提供しているヘルプはこちらでご確認ください。