Advertisement
askanton

ViberBot

Apr 12th, 2024
668
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.81 KB | None | 0 0
  1. import json
  2. import logging
  3.  
  4. import requests
  5. from flask import Flask, request, Response
  6. from viberbot import Api
  7. from viberbot.api.bot_configuration import BotConfiguration
  8. from viberbot.api.messages.text_message import TextMessage
  9. from viberbot.api.messages.url_message import URLMessage
  10. from viberbot.api.viber_requests import ViberFailedRequest, ViberConversationStartedRequest
  11. from viberbot.api.viber_requests import ViberMessageRequest
  12. from viberbot.api.viber_requests import ViberSubscribedRequest
  13.  
  14. app = Flask(__name__)
  15.  
  16. viber = Api(BotConfiguration(
  17.     name='Bot Name',
  18.     avatar='',
  19.     auth_token='**********-************-*************'
  20. ))
  21.  
  22. @app.route('/', methods=['POST'])
  23. def incoming():
  24.     #logger.debug("received request. post data: {0}".format(request.get_data()))
  25.     # every viber message is signed, you can verify the signature using this method
  26.     if not viber.verify_signature(request.get_data(), request.headers.get('X-Viber-Content-Signature')):
  27.         return Response(status=403)
  28.  
  29.     # this library supplies a simple way to receive a request object
  30.     viber_request = viber.parse_request(request.get_data())
  31.  
  32.     if isinstance(viber_request, ViberMessageRequest):
  33.         message = viber_request.message
  34.         # lets echo back
  35.         viber.send_messages(viber_request.sender.id, [
  36.             message
  37.         ])
  38.     elif isinstance(viber_request, ViberSubscribedRequest):
  39.         viber.send_messages(viber_request.get_user.id, [
  40.             TextMessage(text="thanks for subscribing!")
  41.         ])
  42.     elif isinstance(viber_request, ViberFailedRequest):
  43.         logger.warn("client failed receiving message. failure: {0}".format(viber_request))
  44.  
  45.     return Response(status=200)
  46.  
  47. if __name__ == "__main__":
  48.     context = ('server.crt', 'server.key')
  49.     app.run(port="8087")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement