Возможность отправлять контекстные данные в диалоговый поток без вызова webhook из Dialogflow, но с самого сервера - PullRequest
1 голос
/ 05 апреля 2019

В настоящее время у меня есть webhook, который вызывается из Dialogflow (выполнение) и проверяет, какое намерение в настоящее время применимо. (Я делаю все через JSON), как только я узнаю, какое намерение я отправляю (через webhook) ответ JSON. Мне было интересно, если это возможно, чтобы инициировать объект JSON и отправить его в Dialogflow. (Я хочу отправить контекст, не позволяя пользователю сначала ввести тип, а Dialogflow получит запасной вариант) (NodeJS Server -> Dialogflow). В настоящее время я могу это сделать только одним способом (Dialogflow -> NodeJS Server (объект JSON с contex) -> Dialogflow).

CURRENT:

var dialog_flow = {
    // Create context using Google dialogflow
    createContext: async function(projectId, sessionId, contextId, parameters, lifespanCount){ 

        console.log("params to be sent: ", parameters);

        //Instantiates client to create the actual context before sending
        const contextsClient = new dialogflow.ContextsClient({
            keyFilename: './dialogflow_credentials.json'
        });

        const sessionPath = contextsClient.sessionPath(projectId, sessionId);
        const contextPath = contextsClient.contextPath(
            projectId,
            sessionId,
            contextId
        );

        const createContextRequest = {
            parent: sessionPath,
            context: {
                name: contextPath,
                lifespanCount: lifespanCount,
                parameters: parameters
            },
        };

        const response = await contextsClient.createContext(createContextRequest);
        console.log(`Created ${response[0].name}`);
    }

};

ПАРАМЕТРЫ:

let testobj = {
    firstname: 'test name',
    lastname: 'itworks!!',
    dd: 'fgfgf',
    ff: 'fgfg'
}

1 Ответ

2 голосов
/ 05 апреля 2019

Вы можете позвонить напрямую Dialogflow из Node.js, без необходимости получения веб-крючка.Для этого вам нужно будет использовать пакет dialogflow.

const sessionClient = new dialogflow.SessionsClient();

const session = sessionClient.sessionPath(projectId, sessionId);

const request = {
    session,
    queryInput: {
        text: {
            text: 'Some text'
        }
    },
    queryParams: {
       contexts: [context] // here you send the data
    }
};

sessionClient.detectIntent(request)
   .then(console.log)
   .catch(console.error);

. Для отправки контекста с данными вам нужно будет использовать dialogflow.ContextsClient

.Объяснение этого в этих других вопросах:

И для аутентификации клиента вы можете проверить:

UPDATE : 2 недели назад Dialogflow удалил образец structjson.js из хранилища, но в пользу пакета npm для обработки кодирования / декодирования структуры protobuf: pb-util

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...