- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试从 Viber 机器人向订阅用户发送消息。我可以获得订阅的用户 ID,但是当我发送消息时,出现 500 错误。
from flask import Flask, request, Response
from viberbot import Api
from viberbot.api.bot_configuration import BotConfiguration
from viberbot.api.messages.text_message import TextMessage
app = Flask(__name__)
viber = Api(BotConfiguration(
name='PythonSampleBot',
avatar='http://www.clker.com/cliparts/3/m/v/Y/E/V/small-red-apple-hi.png',
auth_token='xxx-xxx-xxx'
))
@app.route('/', methods=['POST'])
def incoming():
user_id = viber.get_account_info()['members'][0]['id']
print(user_id)
viber.send_messages(user_id, [
TextMessage(text="thanks for subscribing!!!!!")
])
return Response(status=200)
if __name__ == "__main__":
context = ('E:\\Docs\\learn_py\\viberbot\\cert.pem',
'E:\\Docs\\learn_py\\viberbot\\key.pem')
app.run(host='0.0.0.0', port=4443, debug=True, ssl_context=context)
请求消息发送代码:
import json
import requests
webhook_url = 'https://xxx.xxx.xxx.xxx:4443'
requests.post(
webhook_url, data=json.dumps({"text": "Hello World"}),
headers={'Content-Type': 'application/json'},
verify='E:\\Docs\\learn_py\\viberbot\\cert.pem'
)
错误信息:
Cfklv9HOJ6bXZcHMaTl9Gw==
192.168.1.1 - - [15/Mar/2019 08:44:02] "POST / HTTP/1.1" 500 - Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2295, in wsgi_app
response = self.handle_exception(e) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request() File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request() File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args) File "E:\Docs\learn_py\viberbot\app.py", line 21, in incoming
TextMessage(text="thanks for subscribing!!!!!") File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\viberbot\api\api.py", line 72, in send_messages
to, self._bot_configuration.name, self._bot_configuration.avatar, message, chat_id) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\viberbot\api\message_sender.py", line 27, in send_message
return self._post_request(BOT_API_ENDPOINT.SEND_MESSAGE, payload) File "C:\Users\user\AppData\Local\Programs\Python\Python37\lib\site-packages\viberbot\api\message_sender.py", line 53, in _post_request
raise Exception(u"failed with status: {0}, message: {1}".format(result['status'], result['status_message'])) Exception: failed with status: 10, message: webhookNotSet * Detected change in 'E:\\Docs\\learn_py\\viberbot\\app.py', reloading
更新:根据mingaleg的建议,我添加了viber.set_webhook('https://xxx.xxx.xxx.xxx:yyyy')
到 incoming()
函数,现在出现另一个错误:
异常:失败,状态:1,消息:结果[HttpRequest[POST/HTTP/1.1]@2c67393 > HttpResponse[null 0 null]@72391ae] javax.net.ssl.SSLHandshakeException:一般 SSLEngine 问题
证书是按照 this answer 中的建议生成的:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
最佳答案
由于您有一个 webhookNotSet
错误消息,您应该将您的机器人配置为有一个:
...
viber = Api(BotConfiguration(
name='PythonSampleBot',
avatar='http://www.clker.com/cliparts/3/m/v/Y/E/V/small-red-apple-hi.png',
auth_token='xxx-xxx-xxx'
))
viber.set_webhook(webhook_url)
...
webhook_url
应该是您的 flask 服务器可以访问的那个。
关于python - 从 Viber 机器人向订阅用户发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177070/
我正在使用 PHP 通过 Viber REST API 创建一个 Viber 机器人。我试图了解如何创建 Viber 设置的键盘设计,但无济于事。如何使它看起来与 Viber 键盘设计提供的示例相同?
根据 API 文档 ( http://developers.viber.com/api/rest-bot-api/index.html#viber-rest-api ),可用的函数不多。我想澄清一下,
当用户订阅我的 Viber PA 时,我会向 https://chatapi.viber.com/pa/get_user_details 发出请求 并取回奇怪的 user.name [user] =>
资源网址 https://chatapi.viber.com/pa/send_message 通用发送消息参数 我正在尝试从 Postman 向 viber 发送消息。我不知道如何找到唯一 Viber
我尝试在我的应用程序中获取消息和电话号码,然后向该号码发送消息,我想通过 Viber 应用程序发送此消息。我可以使用此代码发送消息: Intent intent = new Intent(I
我需要帮助在我的应用程序中实现 Viber 号码。它应该直接将用户与 Viber 聊天选项联系起来,并且应该在需要发送消息的地方添加特定的号码。是否可以通过 HTML 执行此操作?还有什么别的办法吗?
我正在尝试创建一个 Viber Bot 并寻找可以通过我在特定 Public account 中拥有的所有订阅者运行的方法 我检查了 Documentation 的所有方法,但没有找到类似 "get_
当用户点击像 Start a viber chat with us 这样的链接时,我试图找到一种方法来开始 viber 聊天。但到目前为止我没有找到正确的URI来做到这一点。例如,我知道我可以使用 s
我正在尝试使用键盘发送短信。我发现在docs我可以通过将 InputFieldState 的值设置为隐藏来隐藏用户的输入字段,但当我发送消息时,用户输入字段仍然存在。 预期行为 实际行为 最佳答案 试
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 7年前关闭。 Improve this qu
我一直在考虑开发我自己的自定义 Viber 贴纸,但我找不到任何好的来源来给我一些这方面的信息。 有人知道怎么做吗?或者有可能吗?如果是,请告诉我我需要做什么。 谢谢。 最佳答案 当您发送/接收贴纸时
我正在尝试从 Viber 机器人向订阅用户发送消息。我可以获得订阅的用户 ID,但是当我发送消息时,出现 500 错误。 from flask import Flask, request, Respo
我的意思是他们使用乒乓消息来获取用户连接信息吗?简而言之,他们如何知道将请求发送到哪里? 最佳答案 对于 iOS,这些应用使用 APNS(Apple 推送通知服务)。 这是 Apple 提供的一项服务
官方 Viber API 文档对此事件没有真正的帮助,只是强调 send_message 在触发时不应该是端点。有谁知道如何在 PHP 中为聊天机器人欢迎消息编写此事件?我覆盖了整个网络,但一无所获。
目前还没有任何适用于 PC 的 Viber 版本,我想在家用电脑上运行它(evtl。使用 Android 模拟器),这可能吗?由于 Viber 注册基于电话号码,并且通过向客户端电话号码发送短信代码来
有谁知道如何在响应式网站中嵌入 Viber 的调用按钮,以便从台式机或手机调用特定号码? 我有一个 Wordpress 网站,我的客户要求我在他的办公室嵌入一个 Viber 调用按钮。 最佳答案 将此
我需要一个可以重定向到 Viber 上特定号码的深层链接。我现在有这个,但它可以在计算机上正常工作,而不是在手机上。 ">Viber 我看到这个 https://developers.viber.co
在我用swift编写的ios应用程序中,我想根据用户选择共享的社交网络生成一个链接。 例如,如果用户选择 viber,我想知道这一点。那可能吗?有什么事件吗? 就像我提供了一个按钮,如果用户单击该按钮
是否可以通过消息正文的特定联系人以编程方式打开 Telegram 或 Viber?我找到了“如何打开 whatsapp”:whatsapp . Viber 和 Telegram 可能存在类似的解决方案
我已经成功集成了 Sinch SDK,它在应用程序打开时运行良好,现在我正在处理应用程序关闭时的调用。 当应用程序关闭时,当我点击通知时,有来电的本地通知,它会出现在通话屏幕上,我们在那里按“接听”或
我是一名优秀的程序员,十分优秀!