2017-11-29 8 views
0

Ich habe einen php Webhook, ich hosting es auf Heroku, exiding funktioniert gut. Wenn ich es auf api.ai teste, antwortet mir der Bot so, wie ich es möchte, also funktioniert es. Meine Frage ist: Wie kann ich eine E-Mail von meinem Webhook senden oder den Text in eine Datenbank einfügen? Hier ist mein Code:Api.ai E-Mail senden von php webhook

<?php 
$method = $_SERVER['REQUEST_METHOD']; 
//$msg = "First line of text\nSecond line of text"; 

// use wordwrap() if lines are longer than 70 characters 
//$msg = wordwrap($msg,70); 

// send email 
//mail("[email protected]","My subject",$msg); 


// Process only when method is POST 
if($method == 'POST'){ 

$requestBody = file_get_contents('php://input'); 
$json = json_decode($requestBody); 

$equis = $json->result->parameters->equis; 

switch ($equis) { 
    case 'hi': 
     $speech = "Hi, Nice to meet you"; 

     break; 

    case 'bye': 
     $speech = "Bye, good night"; 
     break; 

    case 'anything': 
     $speech = "Yes, you can type anything here."; 
     break; 

    default: 
     $speech = "Sorry, I didnt get that. Please ask me something 
else."; 
     break; 
} 


$response = new \stdClass(); 
$response->speech = $speech; 
$response->displayText = $speech; 
$response->source = "Alex"; 

echo json_encode($response); 
} 
else 
{ 
echo "Method not allowed"; 
} 

?> 
+0

Wird die E-Mail vom Rückruf als Parameter gesendet und ist dies ein * Wie sende ich E-Mails in PHP * Frage oder Ist es ein * Wie finde ich eine E-Mail in der Kontextaktion *? –

+0

BTW-Erfüllungen sind für, wenn Sie die Daten gesammelt haben oder zusätzliche Daten abfragen müssen, nicht für grundlegende Bot-Antworten, die mit Absichten getan werden sollten. –

+0

Ich möchte $ spech auf eine E-Mail senden, aber ich weiß nicht, wie ich das tun kann –

Antwort

1

Sie scheinen die meisten Teile zu haben zusammengestellt, die Sie benötigen. Nachdem Sie herausgefunden haben, was Sie wollen $speech zu sein, können Sie die Teile verwenden, die Sie auskommentiert haben, um die Nachricht zu senden. Vielleicht so etwas wie diese:

switch ($equis) { 
    case 'hi': 
     $speech = "Hi, Nice to meet you"; 

     break; 

    case 'bye': 
     $speech = "Bye, good night"; 
     break; 

    case 'anything': 
     $speech = "Yes, you can type anything here."; 
     break; 

    default: 
     $speech = "Sorry, I didnt get that. Please ask me something 
else."; 
     break; 
} 

mail("[email protected]","My subject",$msg); 

Ebenso können Sie Datenbankoperationen tun oder was auch immer Sie wollen mit den Werten, die Sie aus den Parametern von Dialogflow gesendet bekommen.

Der verwirrendere Teil ist, dass Sie anscheinend nicht darauf achten, welche Absicht oder Aktion ausgelöst wurde. Dies wäre in

$json->result->action 

oder

$json->result->metadata->intentName 

Regel eine davon Sie herausfinden, verwenden, um warum Sie genannt werden wird, und die Parameter dann herauszufinden, was auf das zu tun, basierend .