2017-09-20 27 views
0

Twilio.js(1.4)とTwilio REST APIを使用して、Twilioで使用するソフトフォンを作成しました。Twilio REST APIが応答しない

接続コールバックでは、呼び出しのためにchildSidをフェッチする必要があります。これに対応するために、Laravelアプリでコールリストリソースを使用し、接続コールバックでjQuery.get()を使用してブラウザに取得するルートを作成しました。

最初の接続から約12秒待たなければ何らかの理由でAPIが応答しません。私のPHP関数でsleep(12)を使用した後は、問題なくParentSidの呼び出しとフィルタを正常に読み取ることができます。

Twilio.js経由で接続したあとすぐに呼び出された場合、APIが応答しない理由はありますか? $ client-> calls> read()を使用している場合にのみこれを行うようです。すぐに$ client-> calls($ callSid) - > fetch()を使って呼び出しからparentCallSidを取得することに問題はありません。ここで

は元のコードです:

public function showChildCallSid(Request $request, Client $client) { 

    $callSid = $request->input('CallSid'); 
    sleep(12); // only works after waiting about 12 seconds 
    $call = $client->calls->read(['ParentCallSid' => $callSid])[0]; 

    return $call->sid; 

} 
+0

私はコールのリストは、「最終的には一貫」である疑いがあると思います。 – ceejayoz

+1

「APIがまったく応答しない」と言うと、タイムアウトを受け取ったことを意味しますか?あなたが見ている正確なエラーメッセージを共有できますか? (エラーメッセージが表示されない場合は、表示されていることを教えてください*) – smarx

+0

この関数は実際には500のサーバーエラーを生成します。 – mcpacific

答えて

1

私は問題が最終的な構文に問題だったと思います。 (のみ通常1秒間のポーズを必要とする)は、以下に示すように、私は、コードに修正し、それは現在、非常にうまく機能:

public function showChildCallSid(Request $request, Client $client) { 

    $callSid = $request->input('CallSid'); 
    $attempt = 1; 
    $maxAttempts = 15; 

    do { 

    $calls = $client->calls->read(['ParentCallSid' => $callSid]); 
    if (sizeof($calls) > 0) { 
     break; 
    } 
    sleep(1); 
    $attempt++; 

    } while ($attempt < $maxAttempts); 

    $childSid = $calls[0]->sid; 

    return $childSid; 

} 
関連する問題