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);


}

现在它就像一个魅力!