查看原文
其他

使用 Hangouts Chat 以异步消息形式发送提醒和通知…

Google 谷歌开发者 2018-12-16

文 / G Suite 开发技术推广工程师 Wesley Chun (@wescpy)


大多数聊天机器人都以同步方式响应用户请求,但在某些情况下,聊天机器人不基于显式用户请求执行操作,例如提醒或通知。在今天的 DevByte 视频中,我将介绍如何通过异步方式向聊天室或直接消息 (DM) 发送消息,此操作需要使用 G Suite 中的团队协作和通讯工具 Hangouts Chat。


提到聊天室里的机器人时,您会想到什么?可能用户想要上个季度的欧洲销售额,或者他们想要查询当地的天气或者下一场电影的放映时间。假设有一个可应答各种请求的聊天机器人,用户可以向该机器人发送直接消息 (DM),或者在聊天室中用 @ 提及该机器人。聊天机器人随后处理请求(由 Hangouts Chat 服务发送给机器人),执行任何必要的后台操作,并在 “空间”(聊天室或 DM 的统称)中回复用户。


我们的上一期 DevByte 视频内容围绕 Hangouts Chat 聊天机器人框架展开,向开发者展示了聊天机器人和框架的全部内容,并介绍了如何使用 Python 和 JavaScript 构建其中一种机器人。然而,需要注意的是,这些聊天机器人都是以同步方式响应用户请求。这显然无法满足所有要求。例如,在以下情况下,用户希望得到即时通知:长时间运行的后台作业终于完成、晚点的公共汽车或火车即将到达或某台服务器刚刚停机。我们要意识到,这种提醒既可以来自聊天机器人,也可以来自监控应用。最新一集的 G Suite Dev Show 介绍了如何在任一类型的应用中集成此功能。


https://v.qq.com/txp/iframe/player.html?vid=y0750llf38l&width=500&height=375&auto=0


在视频中,您会发现提醒和通知都是 “带外” 消息,这意味着它们可以随时进入。Hangouts Chat 聊天机器人框架提供了几种方式来向聊天室或 DM(统称为 “空间”)发送异步消息。第一种方式是基于 HTTP 的 REST API。另一种是使用所谓的 “传入 webhook”。


聊天机器人使用 REST API 向空间发送消息。因为聊天机器人永远不会是人类用户,所以需要 Google 服务帐号。在开发者控制台中创建 Hangouts Chat 聊天机器人服务帐号之后,您可以下载与 API 通信所需的凭据。下面是一个简短的 Python 示例代码段,演示了使用 API 向空间异步发送消息的过程。


from apiclient import discovery
from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials

SCOPES = 'https://www.googleapis.com/auth/chat.bot'
creds = ServiceAccountCredentials.from_json_keyfile_name(
       'svc_acct.json', SCOPES)
CHAT = discovery.build('chat', 'v1', http=creds.authorize(Http()))

room = 'spaces/<ROOM-or-DM>'
message = {'text': 'Hello world!'}
CHAT.spaces().messages().create(parent=room, body=message).execute()


如果不采用这种将 API 与服务帐号结合的方案,则可以考虑使用传入 webhook 概念。Webhook 快速、简单,无需配置完整的聊天机器人(即监控应用)即可将消息发送到任何聊天室或 DM。


Webhook 还允许您集成自定义工作流程,例如将新客户添加到公司 CRM(客户关系管理系统)时,以及上面提到的其他工作流程。以下 Python 代码段演示了使用传入 webhook 与空间异步通信的过程。


import requests
import json
URL = 'https://chat.googleapis.com/...&thread_key=T12345'
message = {'text': 'Hello world!'}
requests.post(URL, data = json.dumps(message))


由于传入 webhook 只是 HTTP POST 的端点,因此您甚至可以使用 curl 通过以下命令行向 Hangouts Chat 空间发送消息:


curl \
   -X POST \
   -H 'Content-Type: application/json' \
   'https://chat.googleapis.com/...&thread_key=T12345' \
   -d '{"text": "Hello!"}'


开始之前,请阅读 Hangouts Chat 开发者文档,特别是上文链接的特定页面。我们在本视频中介绍了如何以异步方式向 Hangouts Chat 服务发送消息,希望能够帮助您将聊天机器人开发技能提升到一个新的水平。

注:Hangouts Chat 开发者文档链接

https://developers.google.com/hangouts/chat/


更多 AI 相关阅读:

· 大规模均衡分割与层次聚类

· 保护用户免受扩展程序加密劫持

· 不断演进的 Chrome 安全标识


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存