从dialogflow android sdk发送有效负载到dialogflow

时间:2018-08-24 05:21:59

标签: android sdk dialogflow payload

我正在使用dialogflow的Android客户端-https://github.com/dialogflow/dialogflow-android-client

我想知道如何将有效载荷,经纬度,经度从我的android应用程序发送到dialogflow。有人可以帮上忙吗?

更新

使用以下代码时,我可以传递有效载荷

final AIRequest aiRequest = new AIRequest();
AIOriginalRequest aiO = new AIOriginalRequest(); 
HashMap<String, String> hm = new HashMap<String, String>(); 
hm.put("element_1", "8888"); 
hm.put("element_2", "abcd"); 
aiO.setData(hm); 
aiRequest.setOriginalRequest(aiO); 
aiRequest.setQuery("find Cheese");

我正在以下服务器中获取它,

{
    "responseId": "ddsds-qwq-qwqwq-wqwqwq",
    "session": "<<session>>",
    "queryResult": {
        "languageCode": "en",
        "intentDetectionConfidence": "0.93",
        "allRequiredParamsPresent": "true",
        "parameters": {
            "item": "Cheese"
        },
        "fulfillmentMessages": [{
            "text": {
                "text": [""]
            }
        }],
        "queryText": "find Cheese",
        "intent": {
            "name": "<<session>>",
            "displayName": "item-req"
        }
    },
    "originalDetectIntentRequest": {
        "payload": {
            "element_2": "abcd",
            "element_1": "8888"
        }
    }
}

但是由于我正在使用AIService并使用其中的startListening方法,因此无法设置AIRequest和setOriginalRequest。如果正在使用AIService和startListening,则无法设置OriginalRequest。 Dialogflow sdk会自动执行此操作。

有人遇到这种情况或解决了这个问题吗?

1 个答案:

答案 0 :(得分:1)

除了使用系统实体之外,没有直接的方法来传递此类信息。如果找不到要提取数据的实体,则可能需要进行黑客入侵。在我的项目中,我想发送一个自定义的UUID。现在Dialogflow中不存在可以用来提取UUID的特定系统实体,因此我使用了将UUID附加到对Dialogflow的Android响应并使用||手动提取的简单方法。分隔器。

您可以执行以下操作:

  • 标识可用于检测发送给Dialogflow的消息中纬度和经度的系统实体。
  • 无论生成了什么您想发送给Dialogflow的用户响应消息,都以编程方式附加您的经纬度。像'Hi! My name is Abhinav Tyagi. 77.0000 28.0000'就是我生成的消息。
  • 使用此生成的消息训练Dialogflow Intent,并使用标识的实体在webhook中提取参数。
  • 如果没有实体,则以JSON格式放置数据。
  • 将此JSON附加在用户响应消息的末尾,并用||之类的分隔符分隔像'Hi! My name is Abhinav Tyagi.||{"lon":"77.0000", "lat":"28.0000"}'就是我生成的消息。
  • 使用此生成的消息和变体训练Dialogflow Intent。
  • 在webhook中,从请求中获取输入查询,使用分隔符将其拆分,然后只需解析JSON即可提取经纬度。