使用Flas发布到FB应用程序活动图API端点

2024-10-03 09:15:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在FB Messenger中构建一个机器人,我想记录自定义事件,用FB分析跟踪它们。我是Flask的新手,如果有人能给我一些关于如何构造depost请求的方向,这将非常有帮助,如documentation中所述。例如,我尝试了这个(试图复制节点.js在文件中),但它不起作用:

@app.route('/fb', methods=['POST'])
def custom_event():
    info = {
        'event': 'CUSTOM_APP_EVENTS',
        'custom_events': jsonify(**{'eventName': 'mateo'}),
        'advertiser_tracking_enabled': 0,
        'application_tracking_enabled': 0,
        'page_id': XXX,
    }
    r = requests.post('https://graph.facebook.com/XXX/activities', data = info)
    return r['success']

我收到这个错误:

^{pr2}$

提前谢谢!我快疯了。在


Tags: infoeventflaskfbcustom记录事件机器人
2条回答

我知道怎么做了!它有助于打印状态代码和文本(作为一个新手我没有)。我不知道定制事件必须是一个列表和@Suever在这里的回答中解释的其他细节。在

import json
import requests

info = {
        'event': 'CUSTOM_APP_EVENTS',
        'custom_events': json.dumps([{'_eventName': 'mateo'}]),
        'advertiser_tracking_enabled': 0,
        'application_tracking_enabled': 0,
        'page_id': <page_id>,
        'extinfo': json.dumps(['mb1']),
        'page_scoped_user_id': recipientId,
    }
print(info)
r = requests.post('https://graph.facebook.com/<app_id>/activities', data = info)

print(r.status_code)
print(r.text)

requests.post返回一个^{}对象,并返回响应数据本身。为了访问服务返回的JSON数据,需要使用^{}方法,该方法将返回包含JSON数据的dict。在

r = requests.post('https://graph.facebook.com/XXX/activities', data = info)

return r.json()['success']

更好的方法可能是在尝试访问status字段之前,实际检查Response对象的状态代码,以确保它是一个成功的POST

^{pr2}$

此外,根据文档,您的请求中缺少以下字段

  • extinfo(应该是json.dumps(['mb1'])
  • page_scoped_user_id

相关问题 更多 >