在Facebook messenger API中,如何防止按钮回发有效负载文本在点击时被记录到聊天窗口?

时间:2016-08-02 21:59:51

标签: facebook facebook-messenger facebook-chatbot

TLDR; @ bottom

我在Facebook漏洞部分提出以下问题

注意:这是一个平台设计建议而非错误,因为我找不到聊天API反馈门户 目前,我正在构建一个允许用户跟踪目标的聊天机器人。它会说类似于"你有没有在2016年7月12日散步?"并且下方有“是”/“否”按钮 目前为了传递意图,日期和成就布尔我需要模拟一个这样的字符串" == GOAL ==实现? <<< {goal_achieved}>>>,跟踪日期[[[{date_tracked}]]]"并使用正则表达式捕获分隔变量。在有效载荷中的模板化字符串是用户输入变量的其他情况下(例如,{goal_achieved}'用目标变量替换'>> meditated"然后捕获模板变量的正则表达式可能会失败 可以使用回发有效负载来存储JSON编码的字符串,但问题是有效负载字符串被记录到用户输出中,而JSON字符串有点难看和混乱。如果有效负载未记录到用户,则可以轻松解决我所面临的挑战。而是记录按钮的文本以帮助用户确认单击按钮。
如果那是不可能的,有没有其他建议将数据编码到按钮有效负载?

提供了以下答案(Mark Wiltse)

嗨贾斯汀, 不幸的是,此时我们的有效负载结构不支持您尝试实现的功能。根据我的理解,您希望使用Payload通知您的后端用户是否完成了他们的目标'在那个具体日期。我建议您在将结果传递给我们之前为您的按钮创建有效负载响应,这基本上就是您最初的JSON想法。 我知道这有点麻烦,但传回的有效负载响应与信使线程提供的文本无关。 如果您担心用户之前提供过您的正则表达式问题,我建议您也尝试清理字符串。如果先前的用户数据被清理以避免任何regex / json解析问题,您应该能够实现此功能。 由于这是一个实施问题,我将不得不将此报告关闭为无效。如果您仍在寻找有关实施此流程的其他见解和具体提示,请发布到我们的堆栈溢出,我们有Facebook工程师和各种社区成员也参与其中。 http://facebook.stackoverflow.com/ 用你的信使机器人照顾和祝福。 标记

这句话特别不清楚:

  

我知道这有点麻烦,但有效负载响应   传回的内容与提供的文本无关   信使线程。

TLDR; 任何人都可以告诉我如何防止按钮记录有效负载字符串,以便我可以使用它将JSON传递给我的应用程序,而无需用户看到它?

2 个答案:

答案 0 :(得分:2)

请务必在sendTextMessage()来电中注明receivedPostback()

function receivedPostback(event){
    sendTextMessage(senderID, event.postback.payload);
}

答案 1 :(得分:1)

根据我的理解,您说当按下按钮时,PAYLOAD而不是按钮的文字会显示出来。

您是否正在定义这样的按钮?

Chart

我建议删除任何会破坏有效负载解析的特殊字符。只要特殊字符对用户体验不是至关重要,这可能是一个很好的解决方案。

如果这不能解决您的问题:

您可以添加一个屏幕截图,显示您正在按的按钮,以及您正在谈论的日志消息吗?根据我的理解,您说当按下按钮时,PAYLOAD而不是按钮的文本会显示出来。对我来说情况并非如此,当我按下按钮时,我的按钮文字显示出来。