Asterisk连接器用于Asterisk调用Odoo应用程序。
asterisk-odoo-agent的Python项目详细描述
目录
Introduction
Asterisk Odoo Agent是一个中间件软件,用作Odoo之间的桥梁 和Asterisk IP-PBX。在
使用这一解决方案使Odoo成为一个手机应用程序平台 在Odoo级别完成,这样每个Odoo开发人员都可以快速方便地集成Asterisk 任何Odoo模块的功能。在
代理体系结构是基于回调的,其中每个回调都是一个Odoo方法。在
在许多情况下,代理只会按原样工作,而不需要像在其中工作一样进行任何修改 Asterisk Calls应用程序。在
虽然星号Odoo代理是作为商业模块的必需组件开发的 它决定让代理商在LGPL许可下开放和免费,这样所有的奥多 世界可以从中受益。在
Dependencies
Asterisk Odoo Agent基于Nameko-一个很棒的Python微服务框架。在
Nameko使用应该部署的AMQP代理。建议使用RabbitMQ。在
星号Odoo代理非常小,因为与Odoo相关的操作来自nameko-odoo库 与星号相关的操作来自nameko-ami库。在
Configuration
Agent
使用Nameko样式配置。在
有关默认配置,请参见config.yml。在
另外,请参阅nameko odoo和nameko ami文档,以了解配置选项。在
您应该用您自己的设置覆盖默认配置设置。在
以下是要检查的设置列表:
- ASTERISK_AMI_主机:星号服务器的IP地址或主机名。在
- ASTERISK_AMI_端口:ASTERISK manager接口端口(默认值为5038)。在
- ASTERISK_AMI_用户:ASTERISK manager帐户来自经理.conf一
- ASTERISK_AMI_PASS:星号管理器密码来自经理.conf一
- ASTERISK_AMI_TRACE_EVENTS:如果要调试所有AMI事件,请设置为yes。在
- ODOO_主机:ODOO服务器的IP地址或主机名。在
- ODOO_端口:ODOO端口,8069用于独立端口,当ODOO位于代理之后时为80或443。在
- ODOO_USE_SSL:如果代理使用HTTPS,则设置为yes。在
- ODOO_USER:代理使用的ODOO系统帐户登录。。在
- ODOO_PASS:代理使用的ODOO系统帐户密码。在
- ODOO_DB:ODOO数据库。在
- 启用ODOO_BUS_:默认情况下,远程代理应用程序使用ODOO总线与代理进行通信。它不适用于奥多什所以你可以禁用它。在
- ODOO_BUS_端口:默认值为8072。如果你的奥多比在代理后面,改成80或443。在
- WEB服务器启用:禁用Odoo总线轮询时,必须启动内部HTTP服务器。在
- WEB服务器地址:默认值为0.0.0.0:40000。您应该确保可以从Odoo实例访问这个端口。在
- ODOO_TRACE_AMI_EVENTS:如果要调试发送到ODOO的AMI事件,请设置为yes。在
Asterisk
请参阅有关为代理准备星号的文档Asterisk Calls module。在
Running Asterisk Odoo Agent
您可以从以下任何位置手动启动代理:
^{pr2}$您还可以创建systemd服务文件asterisk_odoo_agent.service,然后 安装它以在引导时启动代理(根据您的环境调整它)。在
[Unit]Description=Asterisk Odoo Odoo connector After=network.target [Service]Environment="SYSTEM_NAME=asterisk"User=root ExecStart=/usr/local/bin/nameko run --config=/etc/asterisk_odoo_agent.yml asterisk_odoo_agent Restart=always RemainAfterExit=no StandardOutput=syslog StandardError=syslog SyslogIdentifier=ASTERISK_CALLS_AGENT [Install]WantedBy=multi-user.target
,并激活它:
systemctl daemon-reload
systemctl enable asterisk_odoo_agent
systemctl start asterisk_odoo_agent
systemctl status asterisk_odoo_agent
Support & Contributing
随时为问题和想法创建新的门票。在
Development
正如一开始所说的在奥多层进行开发。在
特工会转给指定的奥多 AMI messages。在
你的AMI要知道你的邮件应该转发到哪一个 事件映射并将其包含在配置文件(events_map)中。在
假设我们要收集通话记录。在这种情况下,你需要 将Cdrevent映射到将接收它的Odoo模型和方法。 将以下部分添加到events.yml:
-name:Cdrtype:AMImodel:odoo_asterisk.callmethod:create_cdr
现在在名为odoo_asterisk的Odoo应用程序中(只是一个示例)创建一个方法 create_cdr,包含以下内容:
classCall(models.Model):_name='odoo_asterisk.call'_description='Call Log'src=fields.Char()dst=fields.Char()channel=fields.Char()# The rest fields are ommited...@api.modeldefcreate_cdr(self,event):get=event['headers'].getdata={'accountcode':get('AccountCode'),'src':get('Source'),'dst':get('Destination'),'dcontext':get('DestinationContext'),'clid':get('CallerID'),'channel':get('Channel'),'dstchannel':get('DestinationChannel'),'lastapp':get('LastApplication'),'lastdata':get('LastData'),'started':get('StartTime')orFalse,'answered':get('AnswerTime')orFalse,'ended':get('EndTime')orFalse,'duration':get('Duration'),'billsec':get('BillableSeconds'),'disposition':get('Disposition'),'amaflags':get('AMAFlags'),'uniqueid':get('UniqueID')orget('Uniqueid'),'linkedid':get('Linkedid'),'userfield':get('UserField'),'system_name':get('SystemName'),}self.create(data)returnTrue
就这样。在
- 项目
标签: