Python Bot Development - AWS Wickr

This guide provides documentation for Wickr IO Integrations. If you're using AWS Wickr, see AWS Wickr Administration Guide.

Python Bot Development

To develop Wickr IO integrations in languages other than JavaScript such as Python, you will need to set up a Web REST API Interface integration on your machine and send HTTP/HTTPS requests to it. The following examples show how to do it in Python:

Set up your Python app

import requests import json URL = "http://localhost:4001/WickrIO/V1/Apps/CLIENT_API_KEY" PARAMS = {'Accept': '*/*', 'Content-Type': 'application/json', 'Authorization': 'Basic AUTH_KEY'}

Send 1-to-1 Message

data = { "message": "Welcome to AWS Wickr! This message will self-destruct eventually.", "users": [ {"name": "exampleuser@wickr.com"} ] } sendMessage = requests.post(URL + "/Messages", headers=PARAMS, data=json.dumps(data)) print(sendMessage.content)

Add Room

data = { "room": { "title": "Security Group room for Sports in Bot Testing Network", "description": "Security Group room for Sports in Bot Testing Network", "ttl": "25536000", "bor": "0", "members": [ {"name": "wickruser1@wickr.com"}, {"name": "wickruser2@wickr.com"} ], "masters": [ {"name": "wickruser1@wickr.com"} ] } } AddRoom = requests.post(URL + "/Rooms", headers=PARAMS, data=json.dumps(data)) json_data = json.loads(AddRoom.text) room = json_data['vgroupid'] print(room)

Send Room message

data = { "message": "Welcome to AWS Wickr! This message will self-destruct eventually.", "vgroupid": "examplevgroupid" } sendMessage = requests.post(URL + "/Messages", headers=PARAMS, data=json.dumps(data)) print(sendMessage.content)

Get Statistics

getStatistics = requests.get(URL + "/Statistics", headers=PARAMS) print(getStatistics.json())

Delete Statistics

deleteStatistics = requests.delete(URL + "/Statistics", headers=PARAMS) print(deleteStatistics.content)

Get Room

payload = { 'vgroupid': room} getRoom = requests.get(URL + "/Rooms/{0}".format(room), headers=PARAMS) print(getRoom.json())

Modify Room

data = { "title": "Modified room", "description": "Testing ModifyRoom command", "ttl": "25536000", "bor": "0" } modifyRoom = requests.post(URL + "/Rooms/{0}".format(room), headers=PARAMS, data=json.dumps(data)) print(modifyRoom.content)

Add Group Convo

data = { "groupconvo": { "members": [ {"name": "exampleuser@wickr.com"}, {"name": "exampleuser02@wickr.com"} ] } } AddGroupConvo = requests.post(URL + "/GroupConvo", headers=PARAMS, data=json.dumps(data)) print(AddGroupConvo.content) response = json.loads(AddGroupConvo.text) print(response['vgroupid']) groupConvo = response['vgroupid'] print(groupConvo)

Get Group Convos (All)

getGroupConvos = requests.get(URL + "/GroupConvo", headers=PARAMS) print(getGroupConvos.json())

Get Group Convo (One)

getGroupConvo = requests.get(URL + "/GroupConvo/{0}".format(groupConvo), headers=PARAMS) print(getGroupConvo.json())

Delete Group Convo (One)

deleteGroupConvo = requests.delete(URL + "/GroupConvo/{0}".format(groupConvo), headers=PARAMS) print(deleteGroupConvo.content)

Get Message

getMessage = requests.get(URL + "/Messages", headers=PARAMS) print(getMessage.json())

Set MsgRecvCallback

payload = {'callbackurl': 'http://localhost:8080/apps/callback'} setMsgRecvCallback = requests.post(URL + "/MsgRecvCallback", headers=PARAMS, params=payload) print(setMsgRecvCallback.content)

Get MsgRecvCallback

getMsgRecvCallback = requests.get(URL + "/MsgRecvCallback", headers=PARAMS) print(getMsgRecvCallback.content)

Delete MsgRecvCallback

deleteMsgRecvCallback = requests.delete(URL + "/MsgRecvCallback", headers=PARAMS) print(deleteMsgRecvCallback.content)

Complete Python Bot Example

import requests import json import time URL = "http://localhost:4001/WickrIO/V1/Apps/CLIENT_API_KEY" PARAMS = {'Accept': '*/*', 'Content-Type': 'application/json', 'Authorization': 'Basic AUTH_KEY'} def get_messages(): """Get new messages from Wickr""" try: response = requests.get(URL + "/Messages", headers=PARAMS) return response.json() except Exception as e: print(f"Error getting messages: {e}") return [] def process_message(message): """Process a message from Wickr""" try: # Extract message content and sender content = message.get('message', '') sender = message.get('sender', '') print(f"Received message from {sender}: {content}") # Simple echo response if content: reply = { "message": f"You said: {content}", "users": [{"name": sender}] } response = requests.post(URL + "/Messages", headers=PARAMS, data=json.dumps(reply)) print(f"Reply sent: {response.status_code}") except Exception as e: print(f"Error processing message: {e}") def main(): """Main bot loop""" print("Starting Python Wickr bot...") while True: # Get and process new messages messages = get_messages() for message in messages: process_message(message) # Wait before checking for new messages again time.sleep(5) if __name__ == "__main__": main()