各位开发者好,
希望你们都过得很好。我目前正在开发一个项目,使用Python,Flask服务器和WATI API创建WhatsApp机器人。当涉及到在Azure上使用Flask实现webhook服务器以从WATI接收事件有效负载时,我面临着挑战。
Webhook功能:
每当用户向与我的机器人相关联的WhatsApp号码发送消息时,就会触发webhook。当这种情况发生时,会收到一个有效负载,它可以帮助我提取消息的文本内容。根据消息的内容,我的机器人应该执行各种操作。
挑战:
为了在WATI中触发webhook,我需要提供一个HTTPS链接,并在Python Flask路由代码中定义了一个端点。在过去,我尝试使用Railway,它会自动生成URL,但我在Azure上很难实现同样的结果。我尝试创建Azure Function和Web App,但似乎都无法接收来自WATI的webhook请求。
以下是在Railway上部署的流程链接:Webhook设置
我正在联系社区,希望有在Azure上构建webhook服务器经验的人可以提供一些指导或见解。你的意见将不胜感激。
下面是我通过Visual Studio创建函数应用程序时生成的代码。不幸的是,我无法在Azure的日志流中看到任何输出:
import azure.functions as func
import logging
import json
import WATI as wa
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="HttpExample", methods=['POST'])
def HttpExample(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
print("1")
req_body = req.get_json()
except ValueError:
pass
else:
print("2")
name = req_body.get('name')
if name:
print("1")
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
1条答案
按热度按时间um6iljoc1#
当这种情况发生时,会收到一个有效负载,它可以帮助我提取消息的文本内容。根据消息的内容,我的机器人应该执行各种操作。
您可以使用Azure Function Http触发器代码,通过自定义逻辑从消息中提取文本内容,如下所示:
function_app.py:-
输出:-
我从这个WATI Webhook示例消息模板发送一个示例JSON在这里-Webhooks (wati.io)作为POST请求的请求体中的消息. 我发送POST请求后,消息体的函数被触发. 你可以实现你的逻辑,而不是JSON示例我使用它来提取Whatsapp消息的内容后,其接收.
Json作为请求主体的示例,取自WATI webhooks示例:
当地:-
在Postman Http POST请求中复制此Http URL:-
** Postman :-**
创建一个Python Function app并在Function应用程序中部署代码,如下所示,您可以将以下URL作为WATI Jmeter 板中的Webhook URL添加进去:
如果URL在部署后不可见,请从Azure Portal和相同的函数应用复制URL以将其添加到webhook中:
在Azure Portal中:-
在 Postman :-
与Twilio类似的参考:-
easonlai/azure_function_python_sample_01: Azure Function (Python) sample to call API, comparing previously state and send alert message over WhatsApp via Twilio. (github.com)