On Monday, February 18, 2019 3:06:32 PM CST Trevor Peirce wrote: > Hello, > > Looking for pointers as to what I'm missing here. > > I'm using the presence module to allow UAs to subscribe to > message-summary events. I can see the entries appearing in the > active_watchers table and I see subscription renewals increment the cseq > columns so I'm satisfied this part is working well. > > I'm having trouble finding out how to tell Kamailio about a change to > the message-summary so that it can notify the watchers. > > The pua module seems to provide a way but it doesn't seem to work with > the subscriptions set up by the presence module. The presence module > itself does not seem to offer any RPCs capable of doing this. > > Appreciate any pointers!
I use the following Python3 script with Asterisk 16 since it won't publish MWI natively to Kamailio (yet) ### voicemail.conf externnotify=/usr/bin/asterisk-kamailio-publish-mwi ### asterisk-kamailio-publish-mwi #!/usr/bin/python3 # -*- coding: utf-8 -*- import argparse import requests # http://kamailio.org/docs/modules/stable/modules/jsonrpcs KAMAILIO_RPC_URL = 'http://<KAMAILIO IP>:5060/RPC' SIP_NEXTHOP = 'sip:127.0.0.1:5060' SIP_DOMAIN = 'example.com' class ExternNotifyHandler: def __init__(self, context, exten, new, old, urgent): """ Parse context, extension, and new, old, and urgent message counts """ self.context = context if context == 'default': self.context = SIP_DOMAIN self.exten = exten self.recipient = ("sip:{}@{}").format(self.exten, self.context) self.waiting = 'no' if new > 0: self.waiting = 'yes' self.body = ("Messages-Waiting: {}\r\n" "Message-Account: {}\r\n" "Voice-Message: {:d}/{:d} ({:d}/0)\r\n").format( self.waiting, self.recipient, new, old, urgent) def kamailio_rpc_sip_publish(self): """ Generate a SIP PUBLISH MWI via Kamailio's jsonrpcs module """ headers = ("From: <{0}>\r\n" "To: <{0}>\r\n" "Max-Forwards: 1\r\n" "Event: message-summary\r\n" "Content-Type: application/simple-message-summary; " "charset=utf-8\r\n").format(self.recipient) content = { 'id': 1, 'jsonrpc': '2.0', 'method': 'tm.t_uac_start', 'params': [ 'PUBLISH', self.recipient, SIP_NEXTHOP, '.', headers, self.body ] } # http://docs.python-requests.org/en/latest/user/quickstart/ try: r = requests.post(KAMAILIO_RPC_URL, allow_redirects=False, json=content, timeout=5) r.raise_for_status() except requests.exceptions.ConnectionError as e: print(e) pass except requests.exceptions.RequestException as e: print(e) pass # Main processing if __name__ == "__main__": """ Parse Asterisk VoiceMail externnotify positional command line arguments context, extension, new voicemails, old voicemails, urgent voicemails """ parser = argparse.ArgumentParser() parser.add_argument('context', help='Voicemail context') parser.add_argument('exten', help='Voicemail extension') parser.add_argument('new', type=int, help='New voicemail count') parser.add_argument('old', type=int, help='Old voicemail count') parser.add_argument('urgent', type=int, help='Urgent voicemail count') args = parser.parse_args() p = ExternNotifyHandler(args.context, args.exten, args.new, args.old, args.urgent) p.kamailio_rpc_sip_publish() -- Anthony - https://messinet.com F9B6 560E 68EA 037D 8C3D D1C9 FF31 3BDB D9D8 99B6
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Kamailio (SER) - Users Mailing List [email protected] https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
