2017-03-06 6 views
1

私は自分のアカウントに送信された直接メッセージをリアルタイムで取得しようとしています。しかし、私のスクリプトが動作しているのは、誰かが私にメッセージを送るときに、最新のメッセージを得るためにスクリプトを更新する必要があるということです。私は誰かが私にメッセージを送るたびに、即座にそれを得るようにリアルタイムにしたいと思います。それについてどうすればいいですか?どんな助言/提案も高く評価されます。PHPを使用してTwitterから直接メッセージを取得していますか?

<?php 
ini_set('display_errors', 1); 
require_once('twitterapiexchange.php'); 
require_once("twitteroauth.php"); 
$settings = array( 
    'oauth_access_token' => "*********", 
    'oauth_access_token_secret' => "*********", 
    'consumer_key' => "*********", 
    'consumer_secret' => "*********"); 
$url = 'https://api.twitter.com/1.1/direct_messages.json'; 
$getfield = '?since_id=240136858829479935&count=1'; 
$requestMethod = 'GET'; 
$twitter = new TwitterAPIExchange($settings); 
$string = json_decode($twitter->setGetfield($getfield) 
         ->buildOauth($url, $requestMethod) 
         ->performRequest(),$assoc = TRUE); 
foreach($string as $items) 
{ 
    $url = 'https://api.twitter.com/1.1/direct_messages/show.json?'; 
    $requestMethod = 'GET'; 
    $getfields = array('id' => $items['id']); 
    $twitter = new TwitterAPIExchange($settings);   
    $do = $twitter->setGetfield($getfield) 
     ->buildOauth($url, $requestMethod)       
     ->performRequest(); 
    echo "<strong>Teet:</strong> ".$items['text']."<br />"; 
    $senderId = $items['sender_id']; 
    $messageText = $items['text']; 
    $timeStamp = $items['created_at']; 
    $recipentId = $items['recipient_id']; 
    $messageId = $items['id']; 
    $screenname=$items['sender_screen_name']; 
    if(!empty($messageText)) { 
     // $data = file_get_contents('https://fb.craftsilicon.com/testphpbot/core.php??username=".$senderId."&tweetid=".$messageId."&tweettext=".$messageText."&tweettime="$timeStamp."&source=facebook&receiver=".$recipentId."'); 
     $json = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452'); 
     $obj = json_decode($json); 
     //var_dump($obj->results[0]->formatted_address); 
     $addr = $obj->results[0]->formatted_address; 
     $answer = "You said ".$messageText . " " .$addr; 
     echo "<strong>Answer:</strong> ".$answer."<br />"; 
     $api_key='*********' ; 
     $api_secret= '*********' ; 
     $access_token = '*********'; 
     $access_token_key='*********' ; 
     $connection = new TwitterOAuth($api_key,$api_secret, $access_token, $access_token_key); 
     $connection->post('direct_messages/new', array('user_id' => $senderId, 'text' => $messageText)); 
    } 
    //var_dump(json_encode($items, true)); 
}?> 

答えて

0

あなたはストリーミングAPIを使用してuser streamへの常時接続を維持し、その後、応答からダイレクトメッセージをフィルタリングする必要があると思います。

関連する問題