-
Kernel
-
Plugins
-
Release Notes
Kernel
Plugins
Release Notes
The plugin provides integration with Asterisk PBX. The application’s users can occupy numbers as operators of a call-center and process incoming calls.
Asterisk configuration files are typically located in /etc/asterisk
directory. The instruction below was produced for version 21.5.0.
To apply any changes run the CLI:
asterisk -RvvvvvvvvvvT
And reload affected modules:
asterisk*CLI> pjsip reload
Or the whole PBX:
asterisk*CLI> core reload
Use the command to obtain help:
asterisk*CLI> help
In file manager.conf
define AMI settings for connection from the Plugin side.
[general] enabled = yes port = 5038 bindaddr = 0.0.0.0 [crm] secret = <amiSecret> deny=0.0.0.0/0.0.0.0 ; allowed networks with masks permit=192.168.0.0/255.255.0.0 permit=127.0.0.1/255.255.255.0 read = call writetimeout = 5000
The clients connect to Asterisk server and used as phone devices.
Client and Platforms | Configuration |
---|---|
https://www.linphone.org/en/getting-started iOS, Android, GNU/Linux, macOS, Windows |
|
https://www.microsip.org/ Windows |
Popup menu Edit Account |
Add to Plugin Configuration.
asterisk:amiManager.{@inc:cnt}.messageTypeId=<typeId> asterisk:amiManager.{@cnt}.host=<host> asterisk:amiManager.{@cnt}.login=crm asterisk:amiManager.{@cnt}.pswd=<amiSecret> # optional # change default AMI port #asterisk:amiManager.{@cnt}.port=5038 # speeds connection process up or solves problem with undetectable version #asterisk:amiManager.{@cnt}.version=<version> # redefinition of listener, the custom class has to extend the defined below #asterisk:amiManager.{@cnt}.listenerClass=<listenerClass>
Where:
<typeId> - ID of message type Call, used for persisting calls into the system;
<host> - host where Asterisk with AMI is running;
<amiSecret> - AMI password;
<version> - version string, may be: 'Asterisk 13.0', 'Asterisk 16.0', see: https://github.com/asterisk-java/asterisk-java/blob/master/src/main/java/org/asteriskjava/AsteriskVersion.java;
<listenerClass> - custom listener Java class, extending ru.bgcrm.plugin.asterisk.AmiEventListener
Example:
asterisk:amiManager.{@inc:cnt}.messageTypeId=1 asterisk:amiManager.{@cnt}.host=192.168.0.10 asterisk:amiManager.{@cnt}.login=crm asterisk:amiManager.{@cnt}.pswd=234567
Calling number for Outgoing Calls can be adapted using JEXL expression, assigned for message type Call with expressionOutNumberPreprocess key. To the JEXL context passed the following variables:
p or process - object of class ru.bgcrm.model.process.Process, the process;
pp or processParam - object of class ru.bgcrm.dao.expression.ParamExpressionObject, process parameters;
value - object of class ru.bgcrm.model.param.ParameterPhoneValue, phone values.
Sample of such a script, appending calling prefixes depends on some list process parameter value.
messageType.50.expressionOutNumberPreprocess=<<END prefix = null; operator = pp.listValueIds(68); if (1 =~ operator) prefix = "084"; else if (2 =~ operator) prefix = "056"; if (prefix) { prefix = prefix + "7"; log.debug("prefix: " + prefix + "; value: " + value); for (item : value.getItemList()) { phone = item.getPhone(); if (phone.length() == 11) item.setPhone(prefix + phone.substring(1)); } } END
Incoming API events are written down to log/bgerp.debug.log
file. The plugin catches NewStateEvent like this:
01-24/15:16:49 DEBUG [Asterisk-Java ManagerConnection-216-Reader-0:AsyncEventPump] AmiEventListener - AMI event: org.asteriskjava.manager.event.NewStateEvent[dateReceived='Fri Jan 24 15:16:49 ALMT 2025',privilege='call,all',linkedid='1737713805.909',server=null,calleridname=null,channel='PJSIP/114-000001ec',language='ru',exten='s',calleridnum='114',context='external-context',state='Up',callerid='114',connectedlinenum='8707xxxxxxxx',uniqueid='1737713805.923',timestamp=null,channelstatedesc='Up',systemname=null,connectedlinename=null,sequencenumber=null,priority='1',channelstate='6',accountcode='',systemHashcode=1996251948]
Fields connectedlinenum is treated as FROM and callerid as TO number respectively.
Output of asterisk-java can be enabled in logger configuration.
# for debugging library log4j.logger.org.asteriskjava=DEBUG, filed
In Messages tool user can occupy an internal SIP number, used by him for connection to Asterisk. The offered number can be configured and even automatically occupied on user login.
If the wanted number is already used by someone else, the confirmation dialog has shown.
For the user, whose number was taken, sent an information news about.
Successfully occupied number does look so. The Release button should be used for releasing the number.
After occupation a number by a user, all the accepted calls there must be registered as messages and opened for processing.
To simulate such an incoming call from an arbitrary number, can be used Test button.
The test area can be hidden by disabling Test incoming call action in user permissions. |
On hover mouse pointer over param phone values the plugin shows popup menu for making outgoing calls.
The popup menu isn’t shown if parameters were edited after opening process, for this case refresh the process card. |
The calls itself are passed to OS application with tel: link.
If the current user’s number is occupied, once a call being responded, it appears in the Message tab of the process.