【问题标题】:Problem with my Agent when Integrated with Twilio for WhatsApp与 WhatsApp 的 Twilio 集成时我的代理出现问题
【发布时间】:2021-08-07 03:01:37
【问题描述】:

大家好,

一周以来,我一直在尝试将 Dialogflow 与 Twilio 集成以用于 WhatsApp 消息传递。

集成已成功配置,但我在使用 Axios 通过 HTTP 请求检索我们的产品时遇到奇怪的错误。

测试代码在这里:

function testLoopReply(agent) {
   const category_name = 'Small%20Appliances';  
   return new Promise((resolve, reject) => {
       axios.get(`https://sheetdb.io/api/v1/qvlk728a5p23g/search?Categories=*${category_name}*&Status=1&limit=1`).then(function (res) {
           let Categories = res.data;
           if (Categories) {                
                 for (const product of Categories ){
                    agent.add(`https://alaswadtrading.com/index.php?route=product/product&product_id=${product.ProductID}\n\n${product.Name}`);
                }
           } else {
                agent.add(`No items found in the selected category (${category_name})`);
           }

           resolve();
       });
   }); 
  }

考虑场景 1:

  • 设置(Category_Name = “Cooking”),webhook 响应有多个文本响应:
{
  "fulfillmentMessages": [
    {
      "text": {
        "text": [
          "https://alaswadtrading.com/index.php?route=product/product&product_id=2\n\nBEKO STANDARD COOKER HOOD 60CM - INOX"
        ]
      }
    },
    ...
    {
      "text": {
        "text": [
          "https://alaswadtrading.com/index.php?route=product/product&product_id=44\n\nBEKO GAS COOKER 90X60 CLOSE DOOR"
        ]
      }
    }
  ],
  "outputContexts": []
}

在这种情况下,代理通常会根据附加的快照回复这些多个结果:

但是 Twilio 没有响应,并且根据附加的快照触发了错误 11200:

现在,考虑第 2 种情况

  • 设置(Category_Name = “Small%20Appliances”),webhook 响应有多个文本响应:
{
  "fulfillmentText": "https://alaswadtrading.com/index.php?route=product/product&product_id=1\n\nBEKO TURKISH COFFEE MACHINE SINGLE CUP SKY BLUE",
  "outputContexts": []
}

在这种情况下,代理通常会根据附加的快照回复结果:

此外,Twilio 运行良好,并且按照附加的快照正常响应:

我已联系 Dialogflow 和 Twilio,但没有找到解决方案,他们的回复如下:

我不确定问题出在哪里,以及如何找出问题来发布我们的代理。

请给点建议?

相关帖子:Agent unable to print all results received from Axion library request in Dialogflow

【问题讨论】:

  • 您如何将 Twilio 连接到 DialogFlow?
  • 嘿@alaibh,我没有时间筛选 70 分钟的视频来找出你做了什么。您能否具体告诉我您从 Twilio 获取消息的部分,将其发送到 Dialogflow,然后将其发送回 Twilio 进行回复。我相信这很可能是错误所在以及我们应该注意的地方。
  • 你能分享 Twilio 向其发出 webhook 请求的函数的代码吗?或者告诉我 Twilio 在哪里发出 Webhook 请求?
  • 嗨,我想你想知道集成是如何完成的,这就是我与你分享教程的原因。无论如何,Twilio 触发了上面在标题“测试代码在这里:”下提到的函数,函数名称是“testLoopReply(agent)”,它放在 Dialogflow fulfilment 中。

标签: axios twilio dialogflow-es whatsapp twilio-api


【解决方案1】:

这里是 Twilio 开发者宣传员

抱歉,我通常不使用 Dialogflow,但我确实知道如何调试 Twilio,所以我需要询问您是如何将两者联系起来的。

与对agent.add 的多次调用相比,这里的明显区别在于agent 对象在只给出一条带有agent.add 的文本时所做的事情。当您多次调用它时,它似乎会生成一个 fulfillmentMessages 数组,而不是与 Twilio 一起使用的 fulfillmentText 字符串。

您似乎正在使用现有的 DialogFlow 集成,according to this code 只会在您的agent 响应的fulfillmentText 部分发回响应文本。

因此,您应该研究如何更新 DialogFlow 集成以便它可以处理多个 fulfillmentMessages,或者在您的循环中构建您的响应,以便它可以作为一个 fulfillmentText 发送,例如:

function testLoopReply(agent) {
   const category_name = 'Small%20Appliances';  
   return new Promise((resolve, reject) => {
       axios.get(`https://sheetdb.io/api/v1/qvlk728a5p23g/search?Categories=*${category_name}*&Status=1&limit=1`).then(function (res) {
           let Categories = res.data;
           let response = '';
           if (Categories) {                
                 for (const product of Categories ){
                    response += `https://alaswadtrading.com/index.php?route=product/product&product_id=${product.ProductID}\n\n${product.Name}\n\n`;
                }
           } else {
                response = `No items found in the selected category (${category_name})`);
           }
           agent.add(response);
           resolve();
       });
   }); 
  }

【讨论】:

  • 您好,亲爱的,看来我的问题要解决了。当我为您的建议更改代码时,它起作用了,但有时,它触发了错误,提示超出了 1600 个字符的长度。我通过限制回复最多 11 个产品来解决这个问题,还有其他想法可以解决这个问题吗?
  • 使用 Twilio,您一次只能发送 10 条消息,并且每条消息最多可以包含 160 个字符,这会导致该错误消息。您可以限制产品的数量,或者,当您通过循环时,检查添加一个是否会将您的消息推送超过 1600 个字符,如果是,则跳出循环并在该点返回。如果这确实解决了您的问题,请将答案标记为正确,以便其他人也能看到它的帮助。谢谢!
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 2019-08-28
  • 2019-11-25
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多