gpt4 book ai didi

python - 使用 webhook 向 Google Hangouts Chat 机器人发送简单消息

转载 作者:行者123 更新时间:2023-12-01 09:24:13 25 4
gpt4 key购买 nike

我已经在我的 Google Hangouts Chat 的聊天室中设置了一个 webhook .

我可以成功运行他们的example code ,它会从与聊天中的 webhook 关联的机器人生成一条消息:

from httplib2 import Http
from json import dumps

#
# Hangouts Chat incoming webhook quickstart
#
def main():
url = '<INCOMING-WEBHOOK-URL>'
bot_message = {
'text' : 'Hello from Python script!'}

message_headers = { 'Content-Type': 'application/json; charset=UTF-8'}

http_obj = Http()

response = http_obj.request(
uri=url,
method='POST',
headers=message_headers,
body=dumps(bot_message),
)

print(response)

if __name__ == '__main__':
main()

但是,我希望使用标准库包发送此消息,例如 urllib .

但是当我使用 urllib 并运行以下代码时,我收到 urllib.error.HTTPError: HTTP Error 400: Bad Request。为什么我会收到此错误?

import json
import urllib.parse
import urllib.request


def main():
# python 3.6

url = '<INCOMING-WEBHOOK-URL>'
bot_message = {'text': 'Hello from Python script!'}
message_headers = {'Content-Type': 'application/json; charset=UTF-8'}

url_encoded = urllib.parse.urlencode(bot_message)
byte_encoded = url_encoded.encode('utf-8')
req = urllib.request.Request(url=url, data=byte_encoded, headers=message_headers)
response = urllib.request.urlopen(req)
print(response.read())


if __name__ == '__main__':
main()

最佳答案

区别在于正文格式。在第一个版本中,您转储为 json,而在第二个版本中,您对其进行 urlencode。

替换

url_encoded = urllib.parse.urlencode(bot_message)
byte_encoded = url_encoded.encode('utf-8')

byte_encoded = json.dumps(bot_message).encode('utf-8')

关于python - 使用 webhook 向 Google Hangouts Chat 机器人发送简单消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50569411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com