Flask(Python)でCisco Webex Teamsのスペースにオウム返しするBotを作成
FlaskでのBot作成Hello World的なもの
main.py
#!/usr/bin/env python # -*- coding: utf-8 -*- # # Ryo Chiba # 2019/06/13 (Sat.) from __future__ import print_function import requests import sys import json import os import time from flask import * from requests_toolbelt.multipart.encoder import MultipartEncoder import functools token = 'NWIyYTk4NDItY2MzZS00YWEwLThjOWItOWRlM2RiYmFkMzI4ZjZkZGZkMzMtMTI3_PF84_e929f3de-bb48-434c-8d2e-20437b17e683' ms_flag = True app = Flask(__name__) def post_message(room_id, txt, token): global ms_flag if ms_flag == True: ms_flag = False m = MultipartEncoder({'roomId': room_id, 'text': txt}) r = requests.post('https://api.ciscospark.com/v1/messages', data=m,headers={'Authorization': 'Bearer %s' % token,'Content-Type': m.content_type}) else: time.sleep(5) ms_flag = True @app.route("/panel", methods=['GET']) def main_page(): return render_template("mainpage.html") @app.route("/", methods=['POST']) def handle_message(): json = request.json message_id = json["data"]["id"] user_id = json["data"]["personId"] email = json["data"]["personEmail"] room_id = json["data"]["roomId"] bot_id = "Y2lzY29zcGFyazovL3VzL0FQUExJQ0FUSU9OL2M1ZTYzZjQ5LTcwNzItNDRlMy1hNDE0LWVkZWZlNjc3MDc5MQ" print(message_id, file = sys.stdout) print(user_id, file = sys.stdout) print(email, file = sys.stdout) print(room_id, file = sys.stdout) if user_id != bot_id: global token header = {"Authorization": "Bearer %s" % token} get_rooms_url = "https://api.ciscospark.com/v1/messages/" + message_id api_response = requests.get(get_rooms_url, headers=header, verify=False) response_json = api_response.json() message = response_json["text"] print(message, file= sys.stdout) if message == "Hello": post_message(room_id,"Bonjour!",token) return "Success" else: # print("fooo", file=sys.stdout) return "Pass" term_output_json = os.popen('curl http://127.0.0.1:4040/api/tunnels').read() tunnel_info = json.loads(term_output_json) public_url = tunnel_info['tunnels'][0]['public_url'] # Registering Webhook header = {"Authorization": "Bearer %s" % token, "content-type": "application/json"} requests.packages.urllib3.disable_warnings() # Removing SSL warnings post_message_url = "https://api.ciscospark.com/v1/webhooks" payload = { "resource": "messages", "event": "all", "targetUrl": public_url, "name": "BotDemoWebHook" } api_response = requests.post(post_message_url, json=payload, headers=header, verify=False) # Registering Webhook if api_response.status_code != 200: print('Webhook registration Error !') exit(0) if __name__ == '__main__': app.run(host='localhost', use_reloader=True, debug=True)