1+ from datetime import datetime
2+ from io import BytesIO , TextIOBase
3+ import json
4+
5+ import whatsapp_api_webhook_server_python .webhooksHTTPRequestHandler as webhooksHTTPRequestHandler
6+ from whatsapp_api_webhook_server_python .webhooks import TypeWebhook as TypeWebhook
7+
8+ def onEvent (webhookHandler : webhooksHTTPRequestHandler , typeWebhook : str , body ):
9+ if typeWebhook == TypeWebhook .INCOMING_MESSAGE_RECEIVED .value :
10+ onIncomingMessageReceived (webhookHandler , body )
11+ elif typeWebhook == TypeWebhook .DEVICE_INFO .value :
12+ onDeviceInfo (webhookHandler , body )
13+ elif typeWebhook == TypeWebhook .INCOMING_CALL .value :
14+ onIncomingCall (webhookHandler , body )
15+ elif typeWebhook == TypeWebhook .INCOMING_MESSAGE_RECEIVED .value :
16+ onIncomingMessageReceived (webhookHandler , body )
17+ elif typeWebhook == TypeWebhook .OUTGOING_API_MESSAGE_RECEIVED .value :
18+ onOutgoingAPIMessageReceived (webhookHandler , body )
19+ elif typeWebhook == TypeWebhook .OUTGOING_MESSAGE_RECEIVED .value :
20+ onOutgoingMessageReceived (webhookHandler , body )
21+ elif typeWebhook == TypeWebhook .OUTGOING_MESSAGE_STATUS .value :
22+ onOutgoingMessageStatus (webhookHandler , body )
23+ elif typeWebhook == TypeWebhook .STATE_INSTANCE_CHANGED .value :
24+ onStateInstanceChanged (webhookHandler , body )
25+ elif typeWebhook == TypeWebhook .STATUS_INSTANCE_CHANGED .value :
26+ onStatusInstanceChanged (webhookHandler , body )
27+
28+ def onIncomingMessageReceived (webhookHandler : webhooksHTTPRequestHandler , body : object ):
29+ idMessage = body ['idMessage' ]
30+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
31+ senderData = body ['senderData' ]
32+ messageData = body ['messageData' ]
33+ TextOut = idMessage + ': ' \
34+ + 'At ' + str (eventDate ) + ' Incoming from ' \
35+ + json .dumps (senderData , ensure_ascii = False ) \
36+ + ' message = ' + json .dumps (messageData , ensure_ascii = False )
37+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
38+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
39+
40+ def onIncomingCall (webhookHandler : webhooksHTTPRequestHandler , body ):
41+ idMessage = body ['idMessage' ]
42+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
43+ fromWho = body ['from' ]
44+ TextOut = idMessage + ': ' \
45+ + 'Call from ' + fromWho \
46+ + ' at ' + str (eventDate )
47+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
48+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
49+
50+ def onDeviceInfo (webhookHandler : webhooksHTTPRequestHandler , body ):
51+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
52+ deviceData = body ['deviceData' ]
53+ TextOut = 'At ' + str (eventDate ) + ': ' \
54+ + json .dumps (deviceData , ensure_ascii = False )
55+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
56+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
57+
58+ def onOutgoingMessageReceived (webhookHandler : webhooksHTTPRequestHandler , body ):
59+ idMessage = body ['idMessage' ]
60+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
61+ senderData = body ['senderData' ]
62+ messageData = body ['messageData' ]
63+ TextOut = idMessage + ': ' \
64+ + 'At ' + str (eventDate ) + ' Outgoing from ' \
65+ + json .dumps (senderData , ensure_ascii = False ) \
66+ + ' message = ' + json .dumps (messageData , ensure_ascii = False )
67+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
68+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
69+
70+ def onOutgoingAPIMessageReceived (webhookHandler : webhooksHTTPRequestHandler , body ):
71+ idMessage = body ['idMessage' ]
72+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
73+ senderData = body ['senderData' ]
74+ messageData = body ['messageData' ]
75+ TextOut = idMessage + ': ' \
76+ + 'At ' + str (eventDate ) + ' API outgoing from ' \
77+ + json .dumps (senderData , ensure_ascii = False ) + \
78+ ' message = ' + json .dumps (messageData , ensure_ascii = False )
79+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
80+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
81+
82+ def onOutgoingMessageStatus (webhookHandler : webhooksHTTPRequestHandler , body ):
83+ idMessage = body ['idMessage' ]
84+ status = body ['status' ]
85+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
86+ TextOut = idMessage + ': ' + str (eventDate ) + ' status = ' + status
87+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
88+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
89+
90+ def onStateInstanceChanged (webhookHandler : webhooksHTTPRequestHandler , body ):
91+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
92+ stateInstance = body ['stateInstance' ]
93+ TextOut = 'At ' + str (eventDate ) + ' state instance = ' \
94+ + json .dumps (stateInstance , ensure_ascii = False )
95+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
96+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
97+
98+ def onStatusInstanceChanged (webhookHandler : webhooksHTTPRequestHandler , body ):
99+ eventDate = datetime .fromtimestamp (body ['timestamp' ])
100+ statusInstance = body ['statusInstance' ]
101+ TextOut = 'At ' + str (eventDate ) + ' status instance = ' \
102+ + json .dumps (statusInstance , ensure_ascii = False )
103+ webhookHandler .wfile .write ((50 * '-' + '\n ' ).encode ("utf-8" ))
104+ webhookHandler .wfile .write (TextOut .encode ("utf-8" ))
105+
106+ def main ():
107+ webhooksHTTPRequestHandler .startServer ('127.0.0.1' , 8000 , onEvent )
108+
109+ if __name__ == "__main__" :
110+ main ()
0 commit comments