Google Chat in Dart: размещенный извне чат-бот не получает событие ADDED_TO_SPACE при добавлении чат-бота из мобильного приложения - PullRequest
0 голосов
/ 25 октября 2019

Я разрабатываю чат-чат Google Chat, который размещается на внешнем сервере с использованием http-сервера Dart, с которым общаются через Google Cloud. При добавлении чат-бота в DM вашего чата Google (допускается только DM), чат-бот должен отправить приветственное сообщение, предоставляя пользователю выбор локали. Оттуда пользователь может задавать вопросы чат-боту относительно контекста приложения.

Все идет хорошо. Чатбот теперь работает и может быть добавлен из веб-интерфейса Google Chat с помощью события ADDED_TO_SPACE . Затем чатбот запрашивает локаль, и все идет как положено. Также при доступе к чат-боту из приложения Google Chat далее. Однако при попытке добавить чат-робота из мобильного приложения Google Chat (в моем случае, Android) чат-робот остается тихим.

Я отладил эту проблему, посмотрев на событие, которое появляется при добавлении чат-робота с мобильного телефона. ,Тем не менее, кажется, что при добавлении бота с мобильного интерфейса событие вообще не происходит. Это проблема с настройкой внешнего сервера и / или конфигурацией Google Cloud? Больше людей сталкиваются с этой проблемой?

Вот выдержка из кода, обрабатывающего входящие события:

server.listen((request) async {
  // Processing the request
  switch (request.method) {
    case 'POST':
      try {
        final Space space = Space.fromJson(parsedRequest['space'] as Map);
        switch (parsedRequest['type'].toString()) {
          case 'ADDED_TO_SPACE': // Initialize chatbot
            log('${space.name}',
                name: 'GOOGLE|added', time: DateTime.now());
            clients[space.name] = GoogleHangoutsChatbot(space, api);
            clients[space.name].init();
            break;
         // Other cases
        }
      } catch (error) {
        log(error.toString(), error: error);
        response.statusCode = 500; // Server error
      }
      break;
    default:
       response.statusCode = 403; // Method not allowed
   }
}
await response.close();

А вот скриншот моей конфигурации Google Cloud:

Google Cloud configuration

...