2017-09-20 1 views
0

J'ai créé un softphone pour Twilio, en utilisant Twilio.js (1.4) et l'API Twilio REST.Twilio REST API ne répond pas

Sur le rappel de connexion, j'ai besoin de récupérer le childSid pour un appel. Pour accommoder cela, j'ai créé une route dans mon application Laravel pour utiliser la ressource de liste d'appels et l'obtenir dans le navigateur en utilisant jQuery.get() sur le rappel de connexion.

Pour une raison quelconque, l'API ne répond pas du tout si je n'attends pas d'abord environ 12 secondes après la connexion initiale. Après avoir utilisé sleep (12) dans ma fonction PHP, je peux lire les appels avec succès et filtrer le ParentSid sans problèmes.

Y a-t-il une raison pour laquelle l'API ne répondra pas si elle est appelée trop tôt après une connexion via Twilio.js? Il semble ne le faire que lorsque j'utilise $ client-> calls> read(). Je n'ai aucun problème à récupérer un parentCallSid d'un appel immédiatement en utilisant $ client-> calls ($ callSid) -> fetch().

Voici le code original:

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

Je suppose que la liste des appels est "finalement cohérente". – ceejayoz

+1

Lorsque vous dites "l'API ne répond pas du tout", voulez-vous dire que vous recevez un timeout? Pourriez-vous partager le message d'erreur exact que vous voyez? (Si vous ne voyez pas un message d'erreur, pourriez-vous nous dire ce que vous * voyez *?) – smarx

+0

La fonction génère une erreur de 500 serveurs en fait. – mcpacific

Répondre

1

Je crois que la question a finalement été un problème avec la syntaxe. J'ai révisé au code comme montré ci-dessous et cela fonctionne très bien maintenant (seulement besoin d'une pause d'une seconde habituellement):

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; 

}