我正在开发一个facebook微型聊天机器人,我遇到了一个问题,就是机器人反复接收相同的消息,即使它已经回复了消息。在
it keeps receiving the same text from FB and replying to it over and over
def message_handler(request):
data = json.loads(request.body.decode('utf-8'))
if data and data['object'] == 'page':
for pageEntry in data['entry']:
print "nombre de message", len(pageEntry['messaging'])
for messagingEvent in pageEntry['messaging']:
if messagingEvent.get('optin'):
print "optin", messagingEvent
receivedAuthentication(messagingEvent)
elif messagingEvent.get('message'):
print "message", messagingEvent
receivedMessage(messagingEvent)
elif messagingEvent.get('delivery'):
print "delivery", messagingEvent
receivedDeliveryConfirmation(messagingEvent)
elif messagingEvent.get('postback'):
print "postback", messagingEvent
receivedPostback(messagingEvent)
else:
print "UnHandled"
return HttpResponse(status=200)
def receivedMessage(event):
senderID = event.get('sender').get('id')
message = event.get('message')
messageText = message.get('text')
messageAttachments = message.get('attachments')
if messageText:
if messageText == 'image':
sendImageMessage(senderID)
elif messageText == 'button':
sendButtonMessage(senderID)
elif messageText == 'generic':
sendGenericMessage(senderID)
elif messageText == 'receipt':
sendReceiptMessage(senderID)
elif messageText == 'hey':
sendTextMessage(senderID, "Get it. Gimme a moment to process it :). Will get back to you in a moment")
send_seen()
send_typing()
words = words_gen()
sendTextMessage(senderID, words)
def callSendAPI(messageData):
requests.post(
url='https://graph.facebook.com/v2.6/me/messages?access_token=' + config.page_token,
data=json.dumps(messageData),
headers={"Content-Type":"application/json"}
)
我得到我需要发送一个状态200,我做了,但仍然收到相同的短信一遍又一遍
以下是我订阅的活动
conversations, message_deliveries, message_reads, messages, messaging_optins, messaging_postbacks, picture
我删除了消息回音,因为我认为问题最终不是这样的
通过编写一个函数并检查webapi服务中的重复消息,我已经解决了这个问题。在
在这里,我通过有效载荷或从Facebook接收到的消息生成消息唯一id,用户单击或键入这些消息,然后与先前从并发字典中存储的唯一值进行比较。在
_messageUniqueKeysBySender是concurrentdiction,我按发送者Id缓存值30分钟。在
然后签入主代码
^{pr2}$相关问题 更多 >
编程相关推荐