добавление пользовательских полезных нагрузок JSON для TELEGRAM в Dialogflow, чтобы пользователи могли делиться своим номером телефона - PullRequest
0 голосов
/ 02 марта 2019

Предполагается, что приведенная ниже функция обеспечивает выполнение намерения share_your_phone_number.Когда вызывается намерение, для пользователя отображается телеграмма с клавиатуры вашего номера телефона.

function share_your_phone_number(agent) {
agent.add(`Welcome.`);
agent.add(new Payload("telegram", {
    "text": "Please click on button below to share your number",
    "reply_markup": {
      "one_time_keyboard": true,
      "resize_keyboard": true,
      "keyboard": [
        [
          {
            "text": "Share my phone number",
            "callback_data": "phone",
            "request_contact": true
          }
        ],
        [
          {
            "text": "Cancel",
            "callback_data": "Cancel"
          }
        ]
      ]
    }
  }
 ));
} 

При развертывании API во встроенном редакторе в боте телеграммы возвращается только строка «Добро пожаловать»чат.кнопки на клавиатуре не отображаются.

Мне нужна подсказка, чтобы это исправить.

1 Ответ

0 голосов
/ 03 марта 2019

При создании объекта Constructor for Payload, как задокументировано [здесь] https://dialogflow.com/docs/reference/fulfillment-library/rich-responses#new_payloadplatform_payload, требуются параметры platform и payload.

new Payload(platform, payload)

Параметр platform является свойством объекта WebhookClient и должен определяться как таковой (agent.SLACK, agent.TELEGRAM и т. Д.), Предполагая, что экземпляр webhookClient был создан и сохранен вagent

Примеры:

agent.add(new Payload(agent.ACTIONS_ON_GOOGLE, {/*your Google payload here*/}); agent.add(new Payload(agent.SLACK, {/*your Slack payload here*/});

agent.add(new Payload(agent.TELEGRAM, {/*your telegram payload here*/});

ref: https://blog.dialogflow.com/post/fulfillment-library-beta/.

Для моего варианта использования, изложенного в вопросе, это мое полное решение:

    // See https://github.com/dialogflow/dialogflow-fulfillment-nodejs
    // for Dialogflow fulfillment library docs, samples, and to report issues
    'use strict';

    const functions = require('firebase-functions');
    const {WebhookClient} = require('dialogflow-fulfillment');
    const {Text, Card, Image, Suggestion, Payload} = require('dialogflow-fulfillment'); 
    process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    const agent = new WebhookClient({ request, response });
    console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
    console.log('Dialogflow Request body: ' + JSON.stringify(request.body));

    function welcome(agent) {
      agent.add(new Payload(agent.TELEGRAM, {

        "text": "Please click on button below to share your number",
        "reply_markup": {
          "one_time_keyboard": true,
          "resize_keyboard": true,
          "keyboard": [
            [
              {
                "text": "Share my phone number",
                "callback_data": "phone",
                "request_contact": true
              }
            ],
            [
              {
                "text": "Cancel",
                "callback_data": "Cancel"
              }
            ]
          ]
        }
       }));
      }

      // Run the proper function handler based on the matched Dialogflow intent name
      let intentMap = new Map();
      intentMap.set('Default Welcome Intent', welcome);
      agent.handleRequest(intentMap);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...