Dialogflow: установка контекста в webhook не перенаправляет разговор на другое намерение - PullRequest
0 голосов
/ 19 июня 2020
        $update_response = file_get_contents("php://input");
        $update = json_decode($update_response, true);

        $reply = 'Message';
        $context = array();
        $context[0]['lifespanCount'] = 1;
        $context[0]['name'] = $update['session'].'/contexts/newUser';

        echo json_encode((array(
            'fulfillmentText' => $reply,
            'outputContexts' => $context,
            'source' => 'Agent')));

Я использую код, показанный выше, в моем php веб-перехватчике, чтобы установить контекст моего разговора после начального.

Вот так выглядит мой ответ о заполнении после анализа в консоли Dialogflow

{
  "fulfillmentText": "Message",
  "outputContexts": [
    {
      "lifespanCount": 1,
      "name": "projects/agent-duvwmd/agent/sessions/8b044ab6-cc42-f663-18a3-409e2983c3f1/contexts/newUser"
    }
  ],
  "source": "Agent"
}

Мой агент успешно отправляет ответ, и я вижу, что имя контекста newUser отображается правильно на консоль диалогового потока, однако она не будет принята как ввод контекста для моего единственного другого намерения. для объекта параметра установлено значение sys.any, поэтому он должен в основном принимать любой ввод. У меня только два намерения и больше нет контекстов, поэтому мой контекст вообще не работает. Я установил срок жизни на 1, что-то около 5, но, похоже, он вообще не работает.

Это такой маленький проект, что использование библиотеки диалогового потока Google будет большим препятствием, поэтому я не буду используй это.

Что вызывает эту проблему?

EDIT : так выглядит Raw API Response в следующем намерении (после установки контекста newUser)

{
  "responseId": "e6a89789-bc1d-4f15-94e4-86404060c4b9-83ffff32",
  "queryResult": {
    "queryText": "Something",
    "parameters": {},
    "languageCode": "es"
  }
}

Нет контекста, ничего. Вот как выглядят мои контексты в intent2

enter image description here

У меня отключен веб-перехватчик для второго намерения

enter image description here

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Я не уверен, правильно ли я понимаю ваш вопрос, но установка контекста в веб-перехватчике не обязательно гарантирует вам, что он будет перенаправлен на другое намерение, если иное не указано в вашем коде. Я запрограммировал свои веб-перехватчики в ядре. net, но, возможно, концепция вам поможет. Попробуйте это:

Go для вашего целевого намерения и создайте событие и событие в текстовом поле события (пример: intent_event). При необходимости создайте входной контекст и выходной контекст. Затем в вашем коде после установки контекста выполните FollowupEventInput с именем вашего события (intent_event). Это перенаправит поток на это новое намерение на основе событий и проверит контексты, чтобы решить, правильное ли это намерение.

Вот как я это сделал.

Надеюсь, это может дать вам какое-то руководство

1 голос
/ 19 июня 2020

У меня было второе намерение, настроенное с двумя входными контекстами, но я пытался установить только один выходной контекст. Я думал, что могу перенаправить на другое намерение только с одним из входных контекстов, но, видимо, это не так.

...