2017-11-17 1 views
1

Ich versuche zusätzliche Informationen an die Anfrage anfügen, die von meiner Anwendung an DialogFlow gesendet wird. Ich bin mir der Möglichkeit bewusst, Daten zu senden, die eine Absicht aufrufen, indem ich ihr Ereignis von Sending Parameters in a Query Request auslocke, und ich verwende diese Methode bereits für andere Funktionen.Wie füge ich zusätzliche Felder in Anfrage hinzu JSON an DialogFlow früher gesendet Api.ai

Grundsätzlich versuche ich, einen Wert mit userID hinzuzufügen, und ich muss diesen Wert in DialogFlow abrufen. Ich behalte Track der Sitzung in , so verwende ich , um ID Wert zu erhalten. Ich habe versucht, die folgenden in der Anfrage zu tun:

$.ajax({ 
    type: "POST", 
    url: baseUrl + "query?v=20150910", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    headers: { 
    "Authorization": "Bearer " + accessToken 
    }, 
    //This folllowing line is the modified part: 
    data: JSON.stringify({ 
    query: text, 
    lang: "en", 
    sessionId: "somerandomthing", 
    userId: "100" 
    }), 
    success: function(data) { 

    }, 
    error: function() { 
    setResponse("Internal Server Error"); 
    } 
}); 

Und dies auch:

$.ajax({ 
    type: "POST", 
    url: baseUrl + "query?v=20150910", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    headers: { 
    "Authorization": "Bearer " + accessToken 
    }, 
    //This folllowing line is the modified part: 
    data: JSON.stringify({ 
    query: text, 
    lang: "en", 
    sessionId: "somerandomthing", 
    userId: "100", 
    parameters: { 
     userId: "100" 
    } 
    }), 
    success: function(data) { 

    }, 
    error: function() { 
    setResponse("Internal Server Error"); 
    } 
}); 

Ich brauche diesen Wert in der Anforderung einig Daten in den back-end darauf basierenden zu verarbeiten. Wenn jemand weiß, wie es geht, oder Vorschläge für einen besseren Ansatz hat, der sehr geschätzt wird.

Es gibt Diskussionsbeiträge in den DialogFlow-Foren, aber es gibt immer noch keine Lösung. Die Funktion ist möglicherweise nicht verfügbar oder nicht dokumentiert. Link 1, Link 2, Link 3.

Antwort

1

Ich habe dieses Problem mit Hilfe von @Svetlana von Dialogflow gelöst. Der ursprüngliche Post ist Here, und hier ist ein Beispiel aus einer JavaScript-Anwendung mit Back-End in Node.js:

Sie würden Ihre Anfrage Format wie:

  $.ajax({ 
       type: "POST", 
       url: baseUrl + "query?v=20150910", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       headers: { 

        "Authorization": "Bearer " + accessToken 
       }, 
       data: JSON.stringify({originalRequest: {data: {exampleMessage: 'Test'}}, query: text, lang: 'en', sessionId: 'somerandomthing'}), 
       success: function (data) { 

       }, 
       error: function() { 
        setResponse("Internal Server Error"); 
       } 
      }); 

und Sie würden den Wert in der Zugriff Webhook mit:

var exampleMessage = req.body.originalRequest.data.exampleMessage; 

oder

var exampleMessage = req.body.originalRequest.data['exampleMessage']; 

Hop Das hilft.

Verwandte Themen