第一天

上午接到一个需求,询问现在我们的电话系统是否能做个呼叫转接。然后在网上搜了一下,发现有路子可走,所以简单试了一下,还真是可以。

首先,需求是什么?

客户拨通了400电话到我们的asterisk电话系统,比如说接通了坐席A;然后A需要在不挂断的情况下转拨给另外一个电话或者手机B。

实现:

找到http://www.asterisk-help.com/read.php?tid-191-page-1.html这篇文章说明了,配置features.conf

blindxfer=#    ;转接开始的前缀
transferdigittimeout => 30
xfersound = beep
xferfailsound = beeperr
featuredigittimeout = 1000
atxfernoanswertimeout = 15
atxferdropcall = no
atxferloopdelay = 10
txfercallbackretries = 2

其中blindxfer 参数,默认是#1 ,按注释意思是按了#后开始拨号码。但是我改成了#,因为我不知道那个1是什么意思;

transferdigittimeout 参数,默认是3秒,刚开始以为是拨号的时间(英文不好)测试后发现其实是你按#后,到你拨第一个号码按键的时间。所以,你要转接的话,你得先查下号码是多少,然后再按#,接着开始拨号;

其他的参数默认的,也没仔细看,目前;

配置完features.conf后,你还需在你的拨号语法文件extensions.conf中配置:

比如exten => _x.,1,Dial(DAHDI/G0/${EXTEN},30,t), 注意加了t参数,t的意思是允许被叫用户按前面设置的#转接;相应的T是允许主叫用户按#转接。

这样就可以呼叫转接了,但是接着还有个问题:

比如我在按#后,转接输入号码,假如号码输错了,这时候该怎么办呢,难道是挂断?这个我还没解决测试,或许能够再按一下#,来重新输入。

第二天

在看http://www.voip-info.org/wiki/index.php?page=Asterisk+config+features.conf文档中,发现了另外一种转接的方式atxfer  
   之前在features.conf使用的是blindxfer ,也就是无人管理的转接,而且配置文件说明的也不详细。 
 
现在的atxfer方式,据文档上的说明: 
      比如用户A打给坐席B,然后B需要转给分机C,B会先和C接通(blindxfer是接通后就自动断掉),然后B可以挂掉(挂掉后A与C将连通)或者按*(默认)返回到A与B的通话中。 
 
这个方式或许可以解决掉输错号码的问题,也就是输错号码后,按*回到A与B通话中,然后再来一遍转接。 
 
不过这些都还只是假想,还需要验证一下,傍晚试一下

第三天

了一下blindxfer 和atxfer 模式,发现: 
atxfer确实和文档上说的一样,但是貌似这两种模式是共存的,就是说,就算你在features.conf把blindxfer注释掉,但其实还是有用。 
这可以从CLI中输入features show(asterisk1.8+)或者show features看到你绑定的按键,所以为了防止混乱,干脆我就把blindxfer设为了##,atxfer设为了#,disconnect为*。 
 
但是又出现了一个问题: 
   转接成功后,用户与被转接的座机连上了,也能通话了,但是他们挂断之后,有时候却会出现所有电话出不去,外线也进不来的情况 
 
我的流程日志是这样的:(其中DAHDI/1234为 from-pstn外线) 
    首先是from-pstn DAHDI/3 外线打进来,进队列,然后DAHDI/8响应 
-- Executing [s@from-pstn:4] Queue("DAHDI/3-1", "1000,t,,,15") in new stack 
    -- Started music on hold, class 'default', on DAHDI/3-1 
    -- Executing [4008@from-internal:1] Dial("Local/4008@from-internal-00000000;2", "DAHDI/8") in new stack 
    -- Called DAHDI/8 
    -- DAHDI/8-1 is ringing 
    -- Local/4008@from-internal-00000000;1 is ringing 
    -- DAHDI/8-1 is ringing 
    -- DAHDI/8-1 answered Local/4008@from-internal-00000000;2 
    -- Local/4008@from-internal-00000000;1 answered DAHDI/3-1 
 
接着DAHDI/8 转接给9898,看日志应该是通过dahdi/4这个外线来拨通62539898 
Stopped music on hold on DAHDI/3-1 
  == Begin MixMonitor Recording DAHDI/3-1 
    -- Started music on hold, class 'default', on DAHDI/3-1 
    -- <Local/4008@from-internal-00000000;1> Playing 'pbx-transfer.gsm' (language 'en') 
     Executing [9898@from-internal:1] Dial("Local/9898@from-internal-00000001;2", "DAHDI/G0/9898,30,th") in new stack 
    -- Called DAHDI/G0/9898 
    -- DAHDI/4-1 answered Local/9898@from-internal-00000001;2 
 
然后DAHDI/8挂断,用户和9898通话, 
== Manager 'asterccdaemon' logged off from 192.168.2.62 
    -- Hanging up on 'DAHDI/8-1' 
    -- Hungup 'DAHDI/8-1' 
  == Spawn extension (from-internal, 4008, 1) exited non-zero on 'Local/4008@from-internal-00000000;2' 
    -- Stopped music on hold on DAHDI/3-1 
    -- <Local/9898@from-internal-00000001;1> Playing 'beep.gsm' (language 'en') 
  == Spawn extension (from-pstn, s, 4) exited non-zero on 'Transfered/DAHDI/3-1<ZOMBIE>' 
  == MixMonitor close filestream 
 
接着就没有日志了,然后就是电话打不进也出不去,一直提示忙碌 
Executing [18701008325@from-internal:1] Dial("DAHDI/8-1", "DAHDI/G0/18701008325,30,th") in new stack 
[Jun 26 19:27:15] WARNING[24070]: app_dial.c:2341 dial_exec_full: Unable to create channel of type 'DAHDI' (cause 34 - Circuit/channel congestion) 
  == Everyone is busy/congested at this time (1:0/1/0) 
    -- Executing [18701008325@from-internal:2] Hangup("DAHDI/8-1", "") in new stack 
  == Spawn extension (from-internal, 18701008325, 2) exited non-zero on 'DAHDI/8-1‘ 
    -- Hanging up on 'DAHDI/8-1' 
    -- Hungup 'DAHDI/8-1'

标红那一句,是不是说明用户的那个通道已经成僵尸了,所以给堵住了呢?再打进来,就提示坐席忙碌,没有空闲的了,而且CLI也没有任何日志。

第四天

分析原因:电话局->中继线->电话交换机->tdm卡,是模拟信号,对于模拟信号挂机、摘机检测确实会有漏的,除非从电话交换机把模拟信号转换为数字信号,但是这样tdm卡就没用了,因为tdm卡的作用就是将模拟信号转换为数字信号。

尝试解决:

1、通过给通道设置超时时间,到时间后,强制将该通道关闭。set(TIMEOUT())这样的语句。但是这样对超时时间的把控就 有问题了,有可能1小时,有可能几分钟。

2、向固话运营商申请反极信号,这样能比较准确挂机、摘机。不过我问联通的,一般人完全不知道这是啥。。而且据说不太好加,他们也做不好。

最后的解决:

我们在交换机中出6根模拟线(貌似交换机需要装个什么设备),通到语音卡(对语音卡来说,这6根线就相当于外线了),然后语音卡连接其他坐席,这样坐席就相当于分机了,拨打公司其他分机也就在交换机内部(之前是通过外线出去,然后进来,相当于占了2根外线),不用花钱了。并且,我们禁止转接到外线,只能转接到公司内部分机。这样,一直占线吊死的情况就不会了。

关于asterisk做呼叫转接的一点经验记录相关推荐

  1. 谈谈我做拼音搜索的一点经验

    谈谈我做拼音搜索的一点经验 需要注意的一些事情 本文使用的为 Java 语言解决方案. 搜索方法上,按照个人理解,有两点关键: 分词 将类似 "women" 这样的词分解成 &qu ...

  2. 浅谈Asterisk的呼叫转接功能

    Asterisk提供两种呼叫转接功能:blindxfer和atxfer.这两个功能的特征按键在features.conf里面指定.     一.blindxfer(blind transferr)是无 ...

  3. 如何找实习单位(个人的一点经验)

    发信人: NetBSD (BSD on amy platform), 信区: Intern 标  题: 如何找实习单位(个人的一点经验) 发信站: 水木社区 (Tue Mar 28 16:03:41  ...

  4. 知乎嵌入式大杂烩:学习STM32的一点经验分享

    前言 前两天在群里看到群友们在讨论学习STM32的话题,并且今天也有一位机械专业的准研究生也问了STM32的入门问题.正好我也有一点经验,所以试着分享一下这个话题.我也不是什么大神,只是一名普通的工程 ...

  5. 使用Unity开发项目的一点经验

    使用Unity开发项目的一点经验 我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中. 默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 注意事项 ...

  6. 命名实体识别的一点经验与技巧

    最近做了一点微小的工作,搞了下命名实体识别(named entity recongnition, NER),这里总结一下目前的认识.内容比较杂,先亮一下目录,如图0-1. 图0-1 目录 一.什么是命 ...

  7. 命名实体识别的一点经验

    最近做了一点微小的工作,搞了下命名实体识别(named entity recongnition, NER),这里总结一下目前的认识.内容比较杂,先亮一下目录,如图0-1. 标图0-1 目录题 1什么是 ...

  8. 软件人生之这些年做项目带新人的经验总结

    本文转自: http://www.cnblogs.com/jirigala/archive/2009/10/13/1575920.html 在此表示感谢. 软件人生之这些年做项目带新人的经验总结 - ...

  9. 学习IT的一点经验分享

    不知不觉2016已经过完,迎来了2017,很多人回顾2016的时候觉得没什么大的收获,想着年初的时候计划学一门技术或者在某一方面有一个进步,可是年底了发现也没掌握多少,的确,如果没什么计划或者方向想要 ...

最新文章

  1. 关于apache camel的消息转发效率
  2. 数组是逻辑结构还是存储结构_数据结构之存储方式
  3. xshell如何登陆数据库_Xshell连接远程服务器和操作数据库
  4. 基本概念学习(9001)---指令系统
  5. mysql修改root用户的密码
  6. 笔记-项目整体管理-项目收尾
  7. USACO - 3.1.6 - Stamps
  8. MyBatis创建SqlSession-怎么拿到一个SqlSessionTemplate?
  9. 12大深度学习开源框架(caffe,tensorflow,pytorch,mxnet等)汇总详解
  10. Pandas速查手册中文版(转)
  11. python中function是什么意思_Python中的Function定义方法
  12. Python爬虫之Scrapy框架系列(12)——实战ZH小说的爬取来深入学习CrawlSpider
  13. 数据结构之寻找下标和相等的数字方阵
  14. GPS网的基线计算以及平差处理(使用Python绘制误差椭圆,C++处理数据并输出Qxx矩阵)
  15. 莫队入门例题之持久化莫队:2120: 数颜色
  16. 波士顿房价预测的TensorFlow实现(多元线性回归)
  17. ----老家-----
  18. 分割(Partition)
  19. 用友和中国企业一起成长
  20. 中国的专利申请量再度超越美国和日本,连续11年居于全球第一

热门文章

  1. OKHttp3.10.0最新版的极致封装
  2. 要是老大放手让你来做、你敢吗?
  3. 微生物学习,培养相关
  4. 39.回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
  5. python mt4_迈达克软件公司承认Python运算对量化交易的重要性将Python与Metatrader 5集成一体...
  6. 交通数据集在哪里下载?
  7. 《Relational inductive biases, deep learning, and graph networks》笔记
  8. 20 高斯过程 Gaussian Process
  9. 人脸对齐(三):Face Alignment by Explicit Shape Regression
  10. easyUI datagrid 单元格数据的修改,保存,json 数据的转化