DialogFlow:如何在使用DialogFlow python API时自动添加参数
我想知道如何在训练短语和参数之间获得自动映射。当你在训练词组中简单地输入“school”时,你有一个具有相同值的实体,你会得到一个自动映射(在我将school添加为训练词组后,我会自动映射到实体@school) 我想要这个,但我正在使用python API插入新的意图。有没有办法做到这一点,或者我需要手动检查是否有任何单词与实体匹配,然后手动为该目的创建该参数?下面是我使用的代码片段DialogFlow:如何在使用DialogFlow python API时自动添加参数,python,dialogflow-es,chatbot,Python,Dialogflow Es,Chatbot,我想知道如何在训练短语和参数之间获得自动映射。当你在训练词组中简单地输入“school”时,你有一个具有相同值的实体,你会得到一个自动映射(在我将school添加为训练词组后,我会自动映射到实体@school) 我想要这个,但我正在使用python API插入新的意图。有没有办法做到这一点,或者我需要手动检查是否有任何单词与实体匹配,然后手动为该目的创建该参数?下面是我使用的代码片段 import dialogflow_v2beta1 client = dialogflow_v2beta1.I
import dialogflow_v2beta1
client = dialogflow_v2beta1.IntentsClient()
parent = client.project_agent_path('[project]')
intent = {
"display_name": "test",
"webhook_state": True,
"training_phrases": [{"parts": [{"text": "school", "entity_type": "@school"}], "type": "EXAMPLE"}],
"parameters": [{"display_name": "school", "entity_type_display_name": "@school", "value": "$school"}]
}
response = client.create_intent(parent, intent)
感谢阅读:)培训短语实体注释是Dialogflow UI的一项功能,在API中不可用
您需要在培训短语中手动注释实体,正如您在问题中已经详细说明的那样。以下是一段代码,可以执行您想要的操作
def create_annotated_intent(project_id, display_name, training_phrases_parts,
action, mapped_entities, message_texts):
"""Create an intent of the given intent type and parameters.
:type entity_display_name: list
"""
intents_client = dialogflow.IntentsClient()
parent = intents_client.project_agent_path(project_id)
training_phrases = []
entity_display_name = mapped_entities.keys()
for training_phrases_part in training_phrases_parts:
parts = []
mots = training_phrases_part.split(" ")
for mot in mots:
is_entity = False
for entity_name in entity_display_name:
if mot in mapped_entities[entity_name]:
parts.append(dialogflow.types.Intent.TrainingPhrase.Part(
text=mot, entity_type="@" + entity_name, alias=entity_name))
if mots.index(mot) != len(mots) - 1:
parts.append(dialogflow.types.Intent.TrainingPhrase.Part(
text=" "))
is_entity = True
break
if not is_entity:
if mots.index(mot) != len(mots) - 1:
parts.append(dialogflow.types.Intent.TrainingPhrase.Part(
text=mot + " "))
else:
parts.append(dialogflow.types.Intent.TrainingPhrase.Part(
text=mot))
# Here we create a new training phrase for each provided part.
training_phrase = dialogflow.types.Intent.TrainingPhrase(parts=parts)
training_phrases.append(training_phrase)
text = dialogflow.types.Intent.Message.Text(text=message_texts)
message = dialogflow.types.Intent.Message(text=text)
parameters = []
for entity_name in entity_display_name:
params = dialogflow.types.Intent.Parameter(display_name=entity_name,
value='$' + entity_name)
params.entity_type_display_name = '@' + entity_name
parameters.append(params)
intent = dialogflow.types.Intent(
display_name=display_name,
action=action,
parameters=parameters,
training_phrases=training_phrases,
messages=[message])
response = intents_client.create_intent(parent, intent)
print('Intent created: {}'.format(response))
我有,找不到合适的解决办法