Класс полезной нагрузки Dialogflow устарел? Пользовательская полезная нагрузка в диалоговом потоке не отвечает для Telegram

Для «тестового намерения» я включил 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 не возвращает ответ полезной нагрузки в коде выполнения для телеграммы при вызове намерения. Я просмотрел журналы функций проекта, но в них не регистрируются ошибки. Это не причина, по которой мой код не работает

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


person Terungwa    schedule 10.10.2019    source источник


Ответы (2)


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

        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 });
person Cristian Guerrero    schedule 12.10.2019
comment
ответ выполнения возвращает это: { "fulfillmentMessages": [], "outputContexts": [] }. Это не работает. - person Terungwa; 13.10.2019

Dialogflow WebhookClient, используемый в логике веб-перехватчика Dialogflow, возвращает Express HTTP объект ответа, содержащий метод отправки. Я подключился к этому методу, чтобы отправить ответ обратно в 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 Payload Class?"

person Terungwa    schedule 13.10.2019