PHP如何使用聊天机器人处理入门按钮Messenger回传

时间:2019-02-18 04:46:23

标签: php bots postback messenger

我正在开发模式下的Messenger聊天机器人上,在处理消息和快速回复方面取得了一些进展,但是在用户按下“入门按钮”后找不到找到检测Facebook发送的回发有效载荷事件的方法。

我已经设置了Get Started按钮的回发,并通过向POST消息发送了POST请求来放置有效负载字符串,该API返回了“成功”,并且还已经将“ messaging_postbacks”事件设置为我的webhook。

但是,当单击按钮时,网络挂钩未检测到该事件。

这是我的代码的一部分:

$input = json_decode(file_get_contents('php://input'), true);
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];

//this handles the message text properly
$message = $input['entry'][0]['messaging'][0]['message']['text'];

//this deals correctly with quick reply payload
$quickreply = $input['entry'][0]['messaging'][0]['message']['quick_reply']['payload'];

我分别尝试但不成功地尝试了以下每一行代码,以获取由“入门”按钮触发的回发输入:

$getstarted = $input['entry'][0]['messaging'][0]['get_started']['payload'];
$getstarted = $input['entry'][0]['messaging'][0]['message']['get_started']['payload'];
$getstarted = $input['entry'][0]['messaging'][0]['postback']['payload'];
$getstarted = $input['entry'][0]['messaging'][0]['message']['postback']['payload']; 

我将不胜感激任何建议:)

1 个答案:

答案 0 :(得分:0)

检索get_started按钮的值的方法是我尝试过的方法之一,

$input['entry'][0]['messaging'][0]['postback']['payload']

问题与发送POST请求的cURL中我代码的另一部分有关。

它说:

if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ch);

并且需要说:

if(!empty($input['entry'][0]['messaging'][0]['postback'])){
$result = curl_exec($ch);

get_started按钮将回发发送到webhook,因此第一个脚本不会启动cUrl,因为$ input变量中没有“ message”,而是“ postback”属性

处理相同问题的优质视频资源:https://www.youtube.com/watch?v=JQkmznEfVDo