Является ли класс полезной нагрузки Dialogflow устаревшим? Пользовательская полезная нагрузка в диалоговом потоке не отвечает за Telegram - PullRequest
0 голосов
/ 10 октября 2019

Для «теста» я включил Enable Webhook Call for this intent Я правильно настроил интеграцию Telegram с ботом.

В полном коде я использую объект Constructor for Payload (https://dialogflow.com/docs/reference/fulfillment-library/rich-responses#new_payloadplatform_payload)and Я указал строку, указывающую целевую платформу полезной нагрузки. См. Код под функцией приветствия:

    const {WebhookClient} = require('dialogflow-fulfillment');
    const {Text, Card, Image, Suggestion, Payload} = require('dialogflow-fulfillment'); 

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    const agent = new WebhookClient({ request, response });

    function test(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('test Intent', test);
      agent.handleRequest(intentMap);
       });

Dialogflow не возвращает ответ полезной нагрузки в коде выполнения телеграмме при вызове намеренияЯ взглянул на журналы функций проекта, но они не регистрируют ошибок. Это не причина, по которой мой код не работает

Является ли класс полезной нагрузки устаревшим в диалоговом потоке?

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Диалоговое окно WebhookClient , используемое в логике Webhook выполнения Dialogflow, возвращает объект ответа Express HTTP, который содержит метод send. Я подключился к этому методу, чтобы отправить ответ обратно в API выполнения диалогового потока dialogflow. См. Код ниже.

function telegramIntegration(agent) {

  const ClientResponse=
  {
    "ClientResponse": [
      {
        "payload": {
          "telegram": 
          {
            "text": "Please share your contact",
            "reply_markup": {
              "keyboard": [
                [
                  {
                    "text": "Share my phone number",
                    "callback_data": "phone",
                    "request_contact": true
                  }
                ],
                [
                  {
                    "text": "Cancel",
                    "callback_data": "Cancel"
                  }
                ]
              ],
              "one_time_keyboard": true,
              "resize_keyboard": true
            }
          }
        }
      }
    ]
  };

  response.send(JSON.stringify(ClientResponse));
}

Однако этот обходной путь не отвечает на мой вопрос " Является ли класс полезной нагрузки Dialogflow устаревшим? "

0 голосов
/ 12 октября 2019

У меня была такая же проблема сегодня, и теперь она работает

        var pl_tl = {
            "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"
                            }
                        ]
                    ]
                }
            }   
        }


        let pl = new Payload(agent.TELEGRAM, pl_tl, { sendAsMessage: true, rawPayload: true });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...