单击 FB Messenger 频道中的快速回复时获取字符串化对象而不是带有文本的字符串(BotFramework v3,Nodejs)

Get stringified object instead of string with text in when Clicked on Quick reply in FB Messenger Channel (BotFramework v3, Nodejs)

今天,我的机器人在点击 FB Messenger 中的快速回复时停止响应我。现在,它不再以字符串形式获取负载,而是 returns 一个带有额外字段的字符串化对象。

我正在使用带有自定义动态对话框的机器人并像这样创建 SuggestedAction:

choices.push(builder.CardAction.postBack(session, "title=Name&params=Some", "Quick Reply Name"));

我曾经在 Session 对象中以字符串 "title=Name&params=Some" 的形式接收有效负载,如下所示:

session.message.text

但是现在,在 session.message.text 中,我收到以下字符串:

"{\r\n  \"type\": \"postBack\",\r\n  \"value\": \"title=Name&params=Some\"\r\n}"

有其他人遇到同样的问题吗?

这是否来自 Azure 机器人服务的变化?如果是这样,我们可以在哪里查看更改日志或发行说明?

由于卡片操作行为是特定于渠道的,因此这更有可能与 Facebook Messenger 平台的变化有关。你可以在这里查看他们的更新日志:https://developers.facebook.com/docs/messenger-platform/changelog/

我可以看到 1 月 8 日发生了变化。它没有提及有关回发行为的任何内容,但仍有可能存在一些意外或未记录的更改,这些更改会导致您看到的结果。

看起来反序列化 JSON 并提取值应该是一件简单的事情。

var payload = JSON.parse(session.message.text).value;