我需要回复一个特定的推特状态。我正在使用以下功能。我在php中使用了亚伯拉罕的twitteroauth库。
public function replyToTwitterStatus($user_id,$status_id,$twitt_reply,$account_name)
{
$connection= $this->getTwitterConnection($user_id,$account_name);
try{
$responce = $this->postApiData('statuses/update', array('status' => $twitt_reply,'in_reply_to_status_id '=> $status_id),$connection);
}
catch(Exception $e){
echo $message = $e->getMessage();
exit;
}
}
// this function will handle all post requests
// To post/update twitter data
// To post/update twitter data
public function postApiData($request,$params = array(),$connection)
{
if($params == null)
{
$data = $connection->post($request);
}
else
{
$data = $connection->post($request,$params);
}
// Need to check the error code for post method
if($data->errors['0']->code == '88' || $data->errors['0']->message == 'Rate limit exceeded')
{
throw new Exception( 'Sorry for the inconvenience,Please wait for minimum 15 mins. You exceeded the rate limit');
}
else
{
return $data;
}
}
但问题是它不是维持对话视图,而是像正常状态更新,例如@abraham你好,你好吗?但“观看对话”并未到来。就像扩展菜单不会来。
请做好 感谢
答案 0 :(得分:1)
您的 in_reply_to_status_id 键中有一个不需要的空间,导致该参数被忽略。
这个电话:
$responce = $this->postApiData('statuses/update', array(
'status' => $twitt_reply,
'in_reply_to_status_id ' => $status_id
), $connection);
应如下所示:
$responce = $this->postApiData('statuses/update', array(
'status' => $twitt_reply,
'in_reply_to_status_id' => $status_id
), $connection);
此外,请确保将 $ status_id 变量作为字符串处理。虽然它们看起来像数字,但是大多数ID太大而不能在php中表示为整数,所以它们最终会被转换为浮点数,而这些浮点数无效。
最后,请确保在状态文本中包含您要回复的人的用户名。引用 in_reply_to_status_id 参数的documentation:
注意::除非在状态文本中提到了推荐此参数引用的作者,否则将忽略此参数。因此,您必须在更新中包含@username,其中username是引用的推文的作者。