我正在使用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会自动执行此操作。
有人遇到这种情况或解决了这个问题吗?
答案 0 :(得分:1)
除了使用系统实体之外,没有直接的方法来传递此类信息。如果找不到要提取数据的实体,则可能需要进行黑客入侵。在我的项目中,我想发送一个自定义的UUID。现在Dialogflow中不存在可以用来提取UUID的特定系统实体,因此我使用了将UUID附加到对Dialogflow的Android响应并使用||手动提取的简单方法。分隔器。
您可以执行以下操作:
'Hi! My name is Abhinav Tyagi. 77.0000 28.0000'
就是我生成的消息。'Hi! My name is Abhinav Tyagi.||{"lon":"77.0000", "lat":"28.0000"}'
就是我生成的消息。