Php Dialogflow培训短语中未识别会话实体

Php Dialogflow培训短语中未识别会话实体,php,dialogflow-es,actions-on-google,api-ai,Php,Dialogflow Es,Actions On Google,Api Ai,我已经建立了一个GoogleActions对话项目,我的服务器用PHP提供dialogflow和webhook意图 在新的dialogflow对话启动时,例如在响应欢迎意图之前,php代码将一些会话实体推送到dialogflow引擎 dialogflow引擎直到两周前才正确识别会话实体词,当时它突然停止工作(我没有更改代码中的任何内容),而现在它仍然不工作 会话实体的创建没有任何错误(我添加了代码来查询dialogflow api,并在创建后列出会话实体,google正在用我发送的所有单词进行回

我已经建立了一个GoogleActions对话项目,我的服务器用PHP提供dialogflow和webhook意图

在新的dialogflow对话启动时,例如在响应欢迎意图之前,php代码将一些会话实体推送到dialogflow引擎

dialogflow引擎直到两周前才正确识别会话实体词,当时它突然停止工作(我没有更改代码中的任何内容),而现在它仍然不工作

会话实体的创建没有任何错误(我添加了代码来查询dialogflow api,并在创建后列出会话实体,google正在用我发送的所有单词进行回复)

但是,意图不能识别并不能填充实体参数

下面是我用来推送实体的代码(使用google dialogflow v2库):

$names=[..字符串数组….];
$parent='projects/inim prova/agent/sessions/'$会话ID;
$client=new SessionEntityTypesClient(['credentials'=>$keyfile]]);
$entities=array_-map(函数($item){返回新实体(['value'=>$item,'synonyms'=>[$item]]);},数组_-unique($names));
$entityType=新会话标题类型([
“名称”=>$parent。“/entityTypes/$displayName”,
“实体覆盖模式”=>EntityOverrideMode::实体覆盖模式补充,
“实体”=>$entities
]);
$client->createSessionEntityType($parent,$entityType);
此代码运行时不会引发异常

几行之后,我正在查询服务器,看看是否一切正常:

$req=$client->listSessionEntityTypes($this->webhookRequest->getSession());
foreach($req作为$element){
Logger::log(Logger::DEV,_方法,_,“SessionEntityType:”.$element->getName());
$entities=$element->getEntities();
foreach($实体作为$实体){
$synonyms=[];
foreach($entity->getSynonyms()作为$synonym)$synonyms[]=$synonym;
Logger::log(Logger::DEV,_方法,_,“>>”$entity->getValue().“:”。内爆(“,”,“,$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
因此,所有实体似乎都位于正确的位置

这是意向培训用语:

(请注意,
artitolideterminativi
Preposizioni
是我忽略的静态实体)

当我在cucina说Ackendi le luci时,这些是我在webhook请求中得到的参数:

“参数”=>数组(
'Nomiusite.original'=>'',
'Preposizioni.original'=>'',
“Nomiloughiuscite”=>“,
“Nomiscite”=>“”,
“Preposizioni'=>”,
'Articoli.original'=>'乐',
“Nomiloughiuscite.原创”=>“,
“Articolivivi”=>“il”,
)
如您所见,
NomiUscite
NomiLuoghiUscite
为空。我希望他们是
luci
cucina


我真的不懂。

你应该在会话实体中添加单词“uscita”和“luogo”。我可以理解,如果您对不属于实体的单词进行注释,参数如何可以为空


您还可以尝试添加“Accendi le luci in cucina”作为培训短语。

您应该在会话实体中添加单词“uscita”和“luogo”。我可以理解,如果您对不属于实体的单词进行注释,参数如何可以为空


您还可以尝试添加“Accendi le luci in cucina”作为一个培训短语。

看起来这确实是一个dialogflow错误,而不是我代码中的缺陷。 几周后,谷歌的支持人员回复我说问题已经解决


我再次运行了测试,没有对代码进行任何修改,现在它工作了。

看起来它确实是一个dialogflow错误,而不是我代码中的一个缺陷。 几周后,谷歌的支持人员回复我说问题已经解决

我再次运行了测试,没有对代码进行任何修改,现在它可以工作了。

Hi。我不能将“accendi le luci in cucina”添加为培训短语,因为用户不能拥有“cucina”(厨房)房间或“luci”(灯光)输出。我确实需要对象和位置来定义会话名称。另外,就我所理解的dialogflow文档而言,“uscita”和“luogo”应该只是两个占位符,不应该要求它们是实体同义词。不管怎么说,这个代理设置正常运行了一个月,然后就停止了。嗨。我不能将“accendi le luci in cucina”添加为培训短语,因为用户不能拥有“cucina”(厨房)房间或“luci”(灯光)输出。我确实需要对象和位置来定义会话名称。另外,就我所理解的dialogflow文档而言,“uscita”和“luogo”应该只是两个占位符,不应该要求它们是实体同义词。无论如何,这个代理设置正常工作了一个月,然后停止了。