代码之家  ›  专栏  ›  技术社区  ›  user867662

从DialogFlow Android SDK向DialogFlow发送负载

  •  0
  • user867662  · 技术社区  · 7 年前

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

    我想知道如何从我的Android应用程序发送有效负载,lat,lon到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并使用令人吃惊的方法时,我无法设置airquest和setoriginalrequest。如果正在使用aiservice和skistinging,则无法设置originalrequest。DialogFlow SDK正在自动执行此操作。

    有人面对这种情况或解决了这个问题吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Abhinav Tyagi    7 年前

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

    您可以执行以下操作:

    • 标识可用于检测DialogFlow消息中的lat、lon的系统实体。
    • 无论您要发送到DialogFlow的用户响应消息是什么,都可以用编程的方式将您的lat,lon附加在其中。喜欢 'Hi! My name is Abhinav Tyagi. 77.0000 28.0000' 将是我生成的消息。
    • 使用此生成的消息训练对话流意图,并使用标识的实体提取Webhook中的参数。
    • 如果没有实体,则将数据放入JSON格式。
    • 在用户响应消息的末尾附加这个JSON,用类似的分隔符分隔 'Hi! My name is Abhinav Tyagi.||{"lon":"77.0000", "lat":"28.0000"}' 将是我生成的消息。
    • 使用生成的消息和变体训练对话流意图。
    • 在Webhook中,从请求中获取输入查询,使用分隔符拆分它,然后简单地解析JSON来提取lat和lon。