2017-02-01 23 views
0

Google Maps APIを使用して、2つのスポット間の時間と距離を計算しようとしています。私のコードはかなり単純で、それが動作します(使用codepad、それがスムーズに実行)が、私は、コードを展開し、ボットは私に間違った答えを与えるサービスを利用しようとすると...

これはコードです:
PHPを使用した電報ボット - エコーが機能しない

$details = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=Miami&destinations=Miami+Beach&mode=driving&sensor=false"; 
    $json = file_get_contents($details); 
    $arr = json_decode($json, TRUE); 
    $distance = $arr[rows][0][elements][0][distance][text]; 
    $time = $arr[rows][0][elements][0][duration][text]; 
    $response = "You should be there in $time. Total distance you'll cover: $distance"; 

$parameters = array('chat_id' => $chatId, "text" => $response); 
$parameters["method"] = "sendMessage"; 
echo json_encode($parameters); 


これは、ボットが私の答えです:

"You should be there in {. Total distance you'll cover: {"; 


そして、これは実際のJSONです:

{ 
    "destination_addresses" : [ "Miami Beach, Florida, Stati Uniti" ], 
    "origin_addresses" : [ "Miami, Florida, Stati Uniti" ], 
    "rows" : [ 
     { 
     "elements" : [ 
      { 
       "distance" : { 
        "text" : "15,7 km", 
        "value" : 15745 
       }, 
       "duration" : { 
        "text" : "22 min", 
        "value" : 1322 
       }, 
       "status" : "OK" 
      } 
     ] 
     } 
    ], 
    "status" : "OK" 
} 


何が起こっているのですか?
UPDATE:file_get_contentsは文字列を返します。だから私はそれをPHP配列にデコードしましたが、今はボットも答えません!

+0

telegambotにメッセージをどのように送信しますか? webhook answer 500 errorの場合、ボットはwebhook経由でメッセージを送信できません。また$ response = "あなたは{$ time}以内にいるはずです。あなたがカバーする総距離:{$ distance}";より良い –

答えて

0
$details = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=Miami&destinations=Miami+Beach&mode=driving&sensor=false"; 
$json = file_get_contents($details); 
$JsonObject = json_decode($json); 
$distance = $JsonObject->rows[0]->elements[0]->distance->text; 
$time = $JsonObject->rows[0]->elements[0]->duration->text; 
$response = "You should be there in $time. Total distance you'll cover: $distance"; 
$chatId = "your telegram id here"; 
$botToken = "your bot token here"; 
file_get_contents("https://api.telegram.org/bot$botToken/sendMessage?chat_id=$chatId&text=$response"); 

このファイルは、file_get_contentsで動作します。

関連する問題