2017-10-27 4 views
1

Ich arbeite vor kurzem an DialogFlow und ich muss einen POST an meine eigenen Webdienste senden. Es ist ein Rest Dienste arbeiten mit Symfony und PHP.DialogFlow (API.AI) REST mit PHP

Also habe ich etwas versucht und es hat nicht funktioniert. Im Tutorial hat es mit Google Cloud funktioniert, aber ich möchte nicht damit arbeiten.

Ich änderte die URL von Webhook mit meinen eigenen. Ich habe nichts anderes in DialogFlow geändert, weil es gut mit Google war. Da ist es:

/** 
* @Rest\View() 
* @Rest\Post("/testDialogBot") 
*/ 
public function testDialogBotAction(Request $request) 
{ 
    $re = "Test reponse"; 
    $response = new Response(json_encode(array("speech" => $re, "displayText" => $re))); 
    $response->headers->set('Content-Type', 'application/json'); 
    return $response; 

} 

Die JSON von DialogFlow Rückkehr:

"status": { 
    "code": 206, 
    "errorType": "partial_content", 
    "errorDetails": "Webhook call failed. Error: Request timeout." 
}, 

Ich bin sicher, dass es funktionieren kann, kann ich etwas Schlimmes wahrscheinlich.

Danke für Hilfe.

Antwort

0

Ok das ist in Ordnung, nicht wahr alle Parameter benötigen. Meine URL war falsch und es scheint, dass DialogFlow kein https, sondern nur http akzeptiert.

0

Nach der official docs die Antwort "sollte" die folgenden Felder haben: Sprache, DisplayText, Daten, ContextOut ADN Quelle. Sie senden nur Sprache und displayText. Vielleicht hilft das Hinzufügen der anderen.

Auch die auf der Dokumentation angegebenen Grenzwerte für die Antwort sind:

Timeout für Service-Antwort - 5 Sekunden. Daten erhalten in der Antwort vom Service - bis zu 64K.

Überprüfen Sie, ob der Server die Antwort innerhalb dieser Parameter senden

Verwandte Themen