Asterisk连接器用于Asterisk调用Odoo应用程序。

asterisk-odoo-agent的Python项目详细描述


https://gitlab.com/odooist/asterisk-odoo-agent/-/raw/master/logo.png

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库。在

Installation

Using PyPi

pip3 install asterisk-odoo-agent

Docker based

有关详细信息,请参见Docker HUB项目页。在

Configuration

Agent

使用Nameko样式配置。在

有关默认配置,请参见config.yml。在

另外,请参阅nameko odoonameko 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

就这样。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用Java将JSON转换为哈希映射   java如何通过使用MapStruct从源对象复制值来填充目标对象内部的映射?   注入泛型类型为@InjectGuice的类时发生java错误   字符串如何在JavaIDE中导入基本符号   在Java中将JSON转换为List<List<String>>   java Java9 HttpClient SSLHandshakeException   java jOOQ代码生成器   java如何调整图标(图像按钮),使其不会放大?   java我可以在使用Eclipse时安装2个或更多Android SDK吗   sqlite Java实现DAO   如何解决此错误?“java.lang.NoSuchFieldError:org.apache.http.conn.ssl.SSLConnectionSocketFactory上的实例。<clinit>。”   java Maven:将基于OSP的zip文件解压缩到WEBINF/lib   java如何在每次调用函数时获取当前gps位置?