2016-02-02 46 views
2

我想使用python脚本阅读页面的facebook会话。有了这个代码使用python sdk阅读facebook消息

import facebook 

at = "page access token" 
pid = "page id" 
api = facebook.GraphAPI(at) 
p = api.get_object('me/conversations') 
print p 

我得到包含以下

{'paging': {'next': 'https://graph.facebook.com/v2.5/1745249635693902/conversations?access_token=<my_access_token>&limit=25&until=1454344040&__paging_token=<my_access_token>', 'previous': 'https://graph.facebook.com/v2.5/1745249635693902/conversations?access_token=<my_access_token>&limit=25&since=1454344040&__paging_token=<my_access_token>'}, 'data': [{'link': '/Python-1745249635693902/manager/messages/?mercurythreadid=user%3A100000386799941&threadid=mid.1454344039847%3A2e3ac25e0302042916&folder=inbox', 'id': 't_mid.1454344039847:2e3ac25e0302042916', 'updated_time': '2016-02-01T16:27:20+0000'}]} 

什么是这些领域的字典?我怎样才能得到消息的文本?

编辑:我试着问了“消息”字段加入

msg = api.get_object(p['data'][0]['id']+'/messages') 
    print msg 

,但它只是返回相同的字段。我在API文档中搜索了一段时间,但没有找到有用的东西。是否有可能使用python读取Facebook页面对话的消息内容?

+0

你需要指定你想要的字段。看看我的文档/对话 – WizKid

+0

我似乎无法找到你建议的文档;官方的API参考没有提及对话 – Maldus

+0

你可以在这里找到https://developers.facebook.com/docs/graph-api/reference/v2.5/page/conversations。这将返回记录在这里的Conversation对象列表https://developers.facebook.com/docs/graph-api/reference/v2.5/conversation/ –

回答

6

我设法自己找到答案;这个问题没有很好地提出来,并且与我正在寻找的东西不匹配。

我想获取页面的facebook会话消息的内容。在facebook图形API文档之后,可以通过询问对话({page-id} /对话),然后所述对话中的消息({conversation-id}/messages,https://developers.facebook.com/docs/graph-api/reference/v2.5/conversation/messages),并最终询问消息本身应该返回一个包含所有字段的字典(/ {message-id},https://developers.facebook.com/docs/graph-api/reference/v2.5/message)。

至少这是我相信它应该是这样的;但是最后的请求只返回字段'created_time'和'id'。

我真的想问的是获取'消息'(内容)字段的方法。我假定函数graph.get_object()来自官方的python facebook sdk,在任何情况下都应该返回所有字段,因为它只有一个文档参数(http://facebook-sdk.readthedocs.org/en/latest/api.html) - 请求对象的图形路径,并添加了额外的字段请求不允许。

我一直在寻找的答案是在这个其他问题,Request fields in Python Facebook SDK。 显然,可以通过传递带有这些字段的** args字典以及请求的路径来请求特定的字段(否则不会返回)。 在GET请求到图形Facebook的,这将是加入

?fields=<requested fieds> 

到对象路径的等效。

这是工作代码:

#!/usr/bin/env python 

import facebook 

at = <my access token> 
pid = <my page id> 
api = facebook.GraphAPI(at) 
args = {'fields' : 'message'} #requested fields 
conv = api.get_object('me/conversations') 
msg = api.get_object(conv['data'][0]['id']+'/messages') 
for el in msg['data']: 
    content = api.get_object(el['id'], **args) #adding the field request 
    print content 
+2

pid是一个未使用的变量 – szedjani