Я настроил диалоговый проект Google Actions с намерениями диалогового потока и веб-крючка, которые мой сервер обслуживает в PHP.
При запуске диалога нового диалога, например, незадолго до ответа на приветственное намерение код php отправляет некоторые объекты сеанса в механизм диалогового потока.
Механизм диалогового потока правильно распознавал слова сущности сеанса до двух недель назад, когда он неожиданно перестал работать (я ничего не изменил в коде), и сейчас он все еще не работает.
Сеансовые объекты создаются без ошибок (я добавил код для запроса api диалогового потока и список разрешений сеанса после создания, а Google отвечает всеми отправленными мной словами).
Однако Намерение не распознает и не заполняет параметры сущности.
Вот код, который я использую для проталкивания сущностей (используя библиотеку google dialogflow v2):
$names = [....array of strings....];
$parent = 'projects/inim-prova/agent/sessions/' . $sessionId;
$client = new SessionEntityTypesClient(['credentials' => $keyfile]]);
$entities = array_map(function($item) { return new Entity(['value' => $item, 'synonyms' => [$item]]); }, array_unique($names));
$entityType = new SessionEntityType([
'name' => $parent . "/entityTypes/$displayName",
'entity_override_mode' => EntityOverrideMode::ENTITY_OVERRIDE_MODE_SUPPLEMENT,
'entities' => $entities
]);
$client->createSessionEntityType($parent, $entityType);
этот код выполняется без исключения.
После нескольких строк я запрашиваю сервер, чтобы убедиться, что все в порядке:
$req = $client->listSessionEntityTypes($this->webhookRequest->getSession());
foreach ($req as $element) {
Logger::log(Logger::DEV, __METHOD__, "SessionEntityType: " . $element->getName());
$entities = $element->getEntities();
foreach ($entities as $entity) {
$synonyms = [];
foreach ($entity->getSynonyms() as $synonym) $synonyms[] = $synonym;
Logger::log(Logger::DEV, __METHOD__, ">> " . $entity->getValue() . ": " . implode(', ', $synonyms));
}
}
и это выписка из журнала отладки:
SessionEntityType: projects/inim-prova/agent/sessions/ABwppHHhgwxi5OGznpUtUq2D7BQrOKWB5Y5UYr20HRKI14iASKugPw2dL2VKMwfvZ193Mq_DUb2emQ/entityTypes/NomiLuoghiUscite
>> sala: sala
>> cucina: cucina
>> giardino: giardino
SessionEntityType: projects/inim-prova/agent/sessions/ABwppHHhgwxi5OGznpUtUq2D7BQrOKWB5Y5UYr20HRKI14iASKugPw2dL2VKMwfvZ193Mq_DUb2emQ/entityTypes/NomiUscite
>> luci: luci
>> irrigazione: irrigazione
>> cappa: cappa
поэтому все сущности кажутся в правильном месте.
Это тренировочная фраза:
(обратите внимание, что ArticoliDeterminativi
и Preposizioni
являются статическими объектами, которые я игнорирую).
и это параметры, которые я получаю по запросу webhook, когда говорю Accendi le luci in cucina
:
'parameters' => array (
'NomiUscite.original' => '',
'Preposizioni.original' => '',
'NomiLuoghiUscite' => '',
'NomiUscite' => '',
'Preposizioni' => '',
'ArticoliDeterminativi.original' => 'le',
'NomiLuoghiUscite.original' => '',
'ArticoliDeterminativi' => 'il',
)
Как видите, NomiUscite
и NomiLuoghiUscite
пусты. Я ожидаю, что они будут luci
и cucina
.
Я действительно невежественен.