3

我需要回复一个特定的 Twitter 状态。我正在使用以下功能。我在 php 中使用了 Abraham 的 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 hello you how are you。但“查看对话”不会到来。像扩展菜单不来。

请做必要的谢谢

4

1 回答 1

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参数的文档:

注意:除非状态文本中提到了此参数引用的推文的作者,否则此参数将被忽略。因此,您必须在更新中包含@username,其中用户名是引用推文的作者。

于 2013-08-02T21:46:02.267 回答