Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DialogFlow:如何在使用DialogFlow python API时自动添加参数_Python_Dialogflow Es_Chatbot - Fatal编程技术网

DialogFlow:如何在使用DialogFlow 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

我想知道如何在训练短语和参数之间获得自动映射。当你在训练词组中简单地输入“school”时,你有一个具有相同值的实体,你会得到一个自动映射(在我将school添加为训练词组后,我会自动映射到实体@school)

我想要这个,但我正在使用python API插入新的意图。有没有办法做到这一点,或者我需要手动检查是否有任何单词与实体匹配,然后手动为该目的创建该参数?下面是我使用的代码片段

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))
我有,找不到合适的解决办法