Как интегрировать BotFramework в чат Hangouts - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь интегрировать своего бота в API чата Hangouts. Я перешел с C # на node.js, чтобы иметь возможность использовать HangoutsAdapter: https://botkit.ai/docs/v4/platforms/hangouts.html

Проблема в том, что HangoutsAdapter ожидает токен Google, и когда я перехожу на вкладку конфигурации API чата Hangouts, я выбираю URL-адрес бота в разделе «Параметры подключения», но единственное, что я получаю, - это поле для ввода конечной точки моего бота. Ничего о жетоне подтверждения, который я должен передать адаптеру Hangouts.

Есть ли другой способ проверить соединение с этим API с помощью HangoutsAdapter? Должен ли я использовать что-то еще, а не HangoutsAdapter? Или, может быть, я должен использовать это по-другому?

1 Ответ

0 голосов
/ 29 июня 2019

Технически, это альтернативное решение (я думаю).Для создания учетных данных Google Hangouts требуется учетная запись GSuite, которой у меня нет.Интерфейс HangoutsAdapterOptions docs указывает «Общий секретный токен [используется]» для проверки и находится на вкладке «Конфигурация».Поскольку поля заблокированы, я не могу это проверить.

Однако альтернативой является использование встроенной функции OAuth в Bot Framework.Я использую это в своем боте без помех.Я совершил переход на веб-сайт Google Hangouts, и он сразу меня узнал.При использовании имени входа OAuth возвращается токен, который можно использовать для передачи в адаптер Hangouts.

Я должен добавить, что приведенная ниже реализация создает магический код входа, который некоторым людям не нравится (не беспокоит меня).Может быть вариант единого входа, но я не исследовал это.


Во-первых, вам нужно настроить учетные данные Google, которые предоставят вам «Идентификатор клиента» и «Секрет клиента».Общие инструкции можно найти здесь .Учетные данные могут быть созданы здесь .Вы можете игнорировать любые ссылки на кодирование, так как они не нужны (благодаря функции BF OAuth).

На странице учетных данных нажмите «Учетные данные» в левом меню.Есть две области, которые необходимо настроить, когда-то там: «Экран согласия OAuth» и «Учетные данные».

enter image description here

Для экрана согласия OAuth предоставьтеИмя приложения.Это не обязательно должно соответствовать ассоциированному запрашивающему приложению и предназначено только для справки при посещении страницы учетных данных.Введите адрес электронной почты службы поддержки, области, которые вы будете использовать (адрес электронной почты, профиль и openid).Могут быть и другие необходимые области, но это сработало для меня, когда я зашел на сайт Hangouts.Наконец, войдите в Авторизованные Домены.Требуется домен botframework.com.Другие, если таковые имеются, вам придется экспериментировать.Сохраните и вернитесь на страницу учетных данных.

Нажмите кнопку «Создать учетные данные» и заполните форму.Дайте своим учетным данным имя (опять же, нигде больше не упоминается для этого проекта), введите любые авторизованные источники и введите https://token.botframework.com/.auth/web/redirect в качестве авторизованного URI перенаправления.Сохраните настройки, скопируйте «Идентификатор клиента» и «Секрет клиента» куда-нибудь и перейдите в Azure и перейдите на страницу настроек вашего бота.

Здесь вам необходимо создать OAuth-соединение вашего бота.Это делается в блейде настроек.В нижней части блейда находится раздел «Настройки подключения OAuth».Нажмите кнопку «Добавить настройку», чтобы начать.

После этого, дайте имя вашему соединению.Это имя будет упоминаться вашим ботом на следующем шаге, поэтому сохраните его где-нибудь.Затем выберите Google из списка поставщиков услуг и вставьте «Идентификатор клиента» и «Секрет клиента», которые вы сохранили ранее, в соответствующие поля.В поле «Области» вы захотите ввести те же значения области, которые вы выбрали в своем приложении учетных данных Google («openid профиля электронной почты»).При вводе убедитесь, что они разделены пробелами.

enter image description here

enter image description here

Наконец,вам нужно смоделировать ваш логин OAuth с примера 18.bot-authentication из репозитория Botbuilder-Samples.Это обеспечивает функциональность, необходимую для того, чтобы пользователь мог войти в систему через вашего бота.

Добавьте имя соединения, которое вы присвоили настройке соединения Google для вашего бота, в файл .env в виде переменной, например:connectionName=<CONNECTION_NAME>.

При настройке приглашения OAuth вы передадите эту переменную в:

this.addDialog(new OAuthPrompt(OAUTH_PROMPT, {
  connectionName: process.env.connectionName,
  text: 'Please Sign In',
  title: 'Sign In',
  timeout: 300000
}));

На этом этапе ваш бот и процесс входа в систему должны быть в порядке.Предполагая, что поток настроен правильно, пользователь должен иметь возможность войти в систему через приглашение OAuth, используя магический код.Токен возвращается обратно в бот, который будет доступен через context на следующем шаге.Затем токен может быть сохранен в состояние и передан адаптеру для использования.В следующем бите я использую простой водопад с шагом oauthPrompt и шагом loginResults.Токен захватывается на втором шаге, где я его консоль регистрирую.

async oauthPrompt(step) {
    return await step.prompt(OAUTH_PROMPT, {
        prompt: {
            inputHint: 'ExpectingInput'
        }
    });
}

async loginResults(step) {
  let tokenResponse = step.result;
  console.log('TOKEN: ', tokenResponse);

  if (tokenResponse != null) {
    await step.context.sendActivity('You are now logged in.');
    return await step.prompt(CONFIRM_PROMPT, 'Do you want to view your token?', ['yes', 'no']);
  }

  // Something went wrong, inform the user they were not logged in
  await step.context.sendActivity('Login was not successful please try again');
  return await step.endDialog();
}

enter image description here

Надежда на помощь!

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