0

我目前正在使用 jovo 框架并使用 nodeJs 编写我的代码。我的项目是这样的:

你好!你叫什么名字?

萨尔玛

你好萨尔玛,很高兴认识你!你要我为你做什么?

播放更好的收音机

你想让我播放名为 A Better Radio 的收音机吗?

收音机的名称“更好的收音机”在意图的 json 文件中,所以在那里一切正常。但是,例如,如果我说“打赌”,则 radio.value 的值将变为未定义。我想检索用户“play a bet ray”所说的数据,以便我可以分析它。

那么如何从意图中检索用户所说的数据呢?

json看起来像这样:

{
    "responseId": "552fd979-bf0f-4f6c-9ddd-39180824c26d",
    "queryResult": {
            "queryText": "GOOGLE_ASSISTANT_WELCOME",
            "parameters": {},
            "allRequiredParamsPresent": true,
            "fulfillmentMessages": [
                    {
                            "text": {
                                    "text": [
                                            ""
                                    ]
                            }
                    }
            ],
            "outputContexts": [
                    {
                            "name": "projects/trythis-807dd/agent/sessions/1530712293227/contexts/google_assistant_welcome"
                    },
                    {
                            "name": "projects/trythis-807dd/agent/sessions/1530712293227/contexts/actions_capability_screen_output"
                    },
                    {
                            "name": "projects/trythis-807dd/agent/sessions/1530712293227/contexts/actions_capability_audio_output"
                    },
                    {
                            "name": "projects/trythis-807dd/agent/sessions/1530712293227/contexts/google_assistant_input_type_keyboard"
                    },
                    {



{
    "fulfillmentText": "<speak>Hello! What's your name?</speak>",
    "payload": {
            "google": {
                    "expectUserResponse": true,
                    "richResponse": {
                            "items": [
                                    {
                                            "simpleResponse": {
                                                    "ssml": "<speak>Hello! What's your name?</speak>"
                                            }
                                    }
                            ]
                    },
                    "noInputPrompts": [
                            {
                                    "ssml": "<speak>Please tell me your name.</speak>"
                            }
                    ]
            }
    },

{
    "responseId": "8d031a0f-9692-4e8d-a172-d7dad9c7511b",
    "queryResult": {
            "queryText": "my name is salma",
            "parameters": {
                    "name": "Salma"
            },
            "allRequiredParamsPresent": true,
            "fulfillmentMessages": [
                    {
                            "text": {
                                    "text": [
                                            ""
                                    ]
                            }
                    }
            ],
            "outputContexts": [
                    {
                            "name": "projects/trythis-807dd/agent/sessions/1530712293227/contexts/actions_capability_screen_output",
                            "parameters": {
                                    "name.original": "salma",
                                    "name": "Salma"
                            }
                    },


{
    "fulfillmentText": "<speak>Hello  Salma, nice to meet you! what do you want me to do for you?</speak>",
    "payload": {
            "google": {
                    "expectUserResponse": true,
                    "richResponse": {
                            "items": [
                                    {
                                            "simpleResponse": {
                                                    "ssml": "<speak>Hello  Salma, nice to meet you! what do you want me to do for you?</speak>"
                                            }
                                    }
                            ]
                    },
                    "noInputPrompts": [
                            {
                                    "ssml": "<speak>Hey , Salma,  What can i do ?</speak>"
                            }
                    ]
            }
    },


{
    "fulfillmentText": "<speak>Hello  Salma, nice to meet you! what do you want me to do for you?</speak>",
    "payload": {
            "google": {
                    "expectUserResponse": true,
                    "richResponse": {
                            "items": [
                                    {
                                            "simpleResponse": {
                                                    "ssml": "<speak>Hello  Salma, nice to meet you! what do you want me to do for you?</speak>"
                                            }
                                    }
                            ]
                    },
                    "noInputPrompts": [
                            {
                                    "ssml": "<speak>Hey , Salma,  What can i do ?</speak>"
                            }
                    ]
            }
    },


 "fulfillmentText": "<speak>Do you want me to play the radio called A Better Radio ?</speak>",

我努力了 :

let inputs = this.getInputs();

let inputs = this.user().getPrevSpeech(0);

let inputs =this.getSpeechText();
4

3 回答 3

2

您可以使用 获取 Google Action 请求的原始文本this.$googleAction.getRawText()

编辑:之前的答案 ( this.googleAction().getRawText()) 适用于 Jovo Framework 版本 < 2。

于 2018-07-06T15:26:39.657 回答
1

从用户的语音/文本中提取信息的首选方法是 Dialogflow 的实体。您可以在此处找到实体的入门指南:https ://dialogflow.com/docs/getting-started/extract-entities

于 2018-07-09T17:41:38.063 回答
-1

好的,首先,我需要知道您是在 dialogflow 上还是为 alexa 执行此操作(假设是其中一个,因为 Jovo 教程适用于这 2 个。

您已将 dialogflow 放在标签中,所以我假设这就是您正在使用的。

我猜您已经使用实体 sys.any 创建了一个名为 radio 的参数。如果没有,则使用实体 sys.any 创建一个名为 radio 的参数;然后有 5-6 个训练短语(仅用于测试,如果您实施,您需要更多)并确保突出显示它的哪个部分实际上是收音机。这就是您应该检索数据的方式。

如果您想检索用户所说的所有内容,这通常不是好的做法(除非您正在测试或需要所说的所有内容)。然后只需用突出显示的所有内容和实体 sys.any 制作一些训练短语。

我可能不完全理解这个问题,我确实使用过 Jovo 一段时间,但现在我使用 firebase 实现,因为它更清晰一些。如果是这样,请澄清您认为我误解了什么。

此外,您还可以受邀加入 Jovo 官方 slack:

https://www.jovo.tech/community

Jovo 的开发人员在那里,所以他们可能会帮助您解决您遇到的任何问题。

于 2018-07-04T14:33:43.987 回答