Fb Messenger Sender_action 功能新手
Newbie on Fb messenger Sender_action function
我正在学习聊天机器人,对整体编码有点陌生(边做边学对吗?)
正在尝试执行信使功能,以便我们的聊天机器人在发送模板之前获得小 "writing" 气泡 x 时间。 = sender_action_typing_on
.
我试过sleep、await、wait等等,代码好像没有执行,但模板在我选择的时间后仍然显示。
根据 Facebook 的文档,json 也是正确的,如果它单独执行,它会在超时前运行 20 秒。
代码:
if ( $response == "")
{
$jsonData = '{"recipient":{"id":"' . $sender . '"},"message":{"text":"' . $message_to_reply.'"}}';
$jsonDataEncoded = $jsonData;
}
else
if ( $response == "123456")
{
$sender_action_typing_on = '{
"recipient":{
"id":"<PSID>"
},
"sender_action":"Typing_on"
}';
$sender_action_typing_on = str_replace("<PSID>", $sender, $sender_action_typing_on);
$jsonDataEncoded = $sender_action_typing_on;
$velkommenTemplateJSON = str_replace("<PSID>", $sender, $velkommenTemplateJSON);
$jsonDataEncoded = $velkommenTemplateJSON;
}
我现在已经解决了这个问题,这对很多人来说可能是不言而喻的,但是对于 "lost soul" 寻找答案的人来说,你可以在这里看到我处理问题的方式:
首先我创建了一个新函数:
function sendToMessenger($access_token, $sender, $sender_actiontemplateJSON)
{
$content = str_replace("<PSID>", $sender, $sender_actiontemplateJSON);
$opts = array(
'http'=>array(
'method'=>"POST",
'header' => "Content-Type: application/json",
'content' => $content
)
);
$context = stream_context_create($opts);
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token=' . $access_token;
// Open the file using the HTTP headers set above
$file = file_get_contents($url, false, $context);
return $file;
然后我重新安排了我发送模板的方式,因为模板是在我的代码 "Sender_action" 的最后发送的,它总是会被覆盖,现在使用 "SendToMessenger" 函数它会立即发送.
else
if ( $response == "123456")
{
sendToMessenger($access_token, $sender, $sender_actiontemplateJSON);
sleep(1);
sendToMessenger($access_token, $sender, $velkommenTemplateJSON);
}
现在它就像一个魅力!
我正在学习聊天机器人,对整体编码有点陌生(边做边学对吗?)
正在尝试执行信使功能,以便我们的聊天机器人在发送模板之前获得小 "writing" 气泡 x 时间。 = sender_action_typing_on
.
我试过sleep、await、wait等等,代码好像没有执行,但模板在我选择的时间后仍然显示。
根据 Facebook 的文档,json 也是正确的,如果它单独执行,它会在超时前运行 20 秒。
代码:
if ( $response == "")
{
$jsonData = '{"recipient":{"id":"' . $sender . '"},"message":{"text":"' . $message_to_reply.'"}}';
$jsonDataEncoded = $jsonData;
}
else
if ( $response == "123456")
{
$sender_action_typing_on = '{
"recipient":{
"id":"<PSID>"
},
"sender_action":"Typing_on"
}';
$sender_action_typing_on = str_replace("<PSID>", $sender, $sender_action_typing_on);
$jsonDataEncoded = $sender_action_typing_on;
$velkommenTemplateJSON = str_replace("<PSID>", $sender, $velkommenTemplateJSON);
$jsonDataEncoded = $velkommenTemplateJSON;
}
我现在已经解决了这个问题,这对很多人来说可能是不言而喻的,但是对于 "lost soul" 寻找答案的人来说,你可以在这里看到我处理问题的方式:
首先我创建了一个新函数:
function sendToMessenger($access_token, $sender, $sender_actiontemplateJSON)
{
$content = str_replace("<PSID>", $sender, $sender_actiontemplateJSON);
$opts = array(
'http'=>array(
'method'=>"POST",
'header' => "Content-Type: application/json",
'content' => $content
)
);
$context = stream_context_create($opts);
$url = 'https://graph.facebook.com/v2.6/me/messages?access_token=' . $access_token;
// Open the file using the HTTP headers set above
$file = file_get_contents($url, false, $context);
return $file;
然后我重新安排了我发送模板的方式,因为模板是在我的代码 "Sender_action" 的最后发送的,它总是会被覆盖,现在使用 "SendToMessenger" 函数它会立即发送.
else
if ( $response == "123456")
{
sendToMessenger($access_token, $sender, $sender_actiontemplateJSON);
sleep(1);
sendToMessenger($access_token, $sender, $velkommenTemplateJSON);
}
现在它就像一个魅力!