问题标签 [dialplan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
797 浏览

asterisk - Dynamic_features problems with asterisk

I have developed a small portion of dialplan code that allows participants of a conversation to dial a code that plays a playback (on both channels). In addition, this has to be recorded (the whole call and the voice-over played).

In the beginning, I was able to make it work. In a call from extension to extension, it works perfectly. The problem is when I make an outgoing call through a SIP trunk. I dial the code, the dialplan shows me a "Feature found", but nothing happens.

In my extensions_custom.conf, I have the following:

#xA;

In my features_applicationmap_custom.conf, I have the following line:

#xA;

I've also tried the following: testing => *315,self/callee,Macro,testing.

And, I have this too in extensions_custom.conf:

#xA;

I've tried to define __DYNAMIC_FEATURES in the globals_custom.conf file, but I get the same result (no playback).

In Asterisk SIP outbound dial options, I have marked "wW".

I repeat that from extension to extension it works perfectly. With incoming calls, it also works. The problem is with outgoing calls.

It is running on Asterisk version 11.21.0. I've tried it in Asterisk 13 too with the same result.

Can anyone help me? Thanks in advance.

0 投票
1 回答
47 浏览

asterisk - how to stop an ivr if the caller presses before the end

Intro : I am brand new to Asterisk. I followed some tutorials in order to set my own basic responder. Though, I don't know how to do the following :

Problem : When someone calls, the IVR will start, but since there are lots of options to choose from, I'd like to find a way to specify the following: if the user presses 2 then stop the IVR and directly jump to the appropriate extension rather than having to listen to the whole message.

example of my current extension.conv :

So if someone wants a banana and presses 1 right from the start, is there a way to spare him from listening to the whole ivr and directly jump to the next exten ?

0 投票
1 回答
503 浏览

asterisk - 如何使用 MixMonitor 为每个录制的通话自动创建一个新的 wav 文件?

简介:我正在尝试记录每个呼叫,但我不想将它们附加到同一个文件或一直覆盖它。我想为每个电话创建一个文件。文件的名称应该是调用时的日期+时间,以便它是唯一的。我不知道该怎么做。

我当前的 extension.conv :

问题:

该文件仅称为“.wav”。

有没有办法让它工作?

0 投票
1 回答
19 浏览

asterisk - 减少使用 goto 时的时间间隔

使用 Goto 命令时,我意识到在到达下一个扩展之前我有大约 5 秒的时间流逝。有没有办法减少它?

呼叫者按 1 和 IVR2 启动之间的时间为 5 秒。

0 投票
2 回答
1473 浏览

bash - Asterisk 13 - system() 拨号计划应用程序无法在文件系统上调用 bash 脚本

这在 Asterisk 1.8.32.3 中运行良好 - 我正在以 root 身份运行的 Centos 7 上使用 Asterisk 13.22.0 进行测试(已经 - 如下所示):

脚本的权限:

我已经升级到 Asterisk 13,Asterisk 现在无法执行 setData.sh 脚本:

我看过很多关于这个的帖子,但没有一个是适用的,或者是盲目的,没有解决方案。

我试过以 root 身份运行星号,但没有运气 - 见上文。

我已将脚本的权限设置为每个人都可以执行,但不起作用。

我已将拨号方案代码更改为

也没有效果。

我还尝试在 Centos 7 中完全禁用/停用 SELinux - 没有效果,错误仍然存​​在。

如果从 shell / xterm 运行脚本,它可以正常工作。

如何让 Asterisk 13 像以前的 Asterisk 版本(如 1.6 和 1.8)那样通过 System() dialplan 应用程序执行简单的 BASH 脚本?

谢谢!

斯特凡

0 投票
0 回答
192 浏览

asterisk - Asterisk 13.22.0 - “stat”拨号计划功能清除通道变量并且不能正常工作

我有以下用于播放录音的 Asterisk 13.22.0 拨号方案代码,文件名由我的外部应用程序在 AMI (AJAM) 接口的原始语句中提供:

分机 7777 是:

但是,如果完成了上述操作,则分机 7777 将启动,并且当在 Asterisk 13.22.0 实例的拨号计划中执行此行时:

它清除变量 recfile 和 altfile - 并且即使文件确实存在于磁盘上也返回 0 - 如果你在此行下方 NoOp ${recfile} 和 ${altfile} 它们 - 都 - 作为空白字符串返回,在它上面它们用正确的数据正确填充 - 要播放的文件归档系统位置。

删除对“STAT”的调用,通道变量保持填充状态,在整个 7777 分机运行期间不会变为空。

为什么 Asterisk 13.22.0 中的“STAT”拨号计划函数显然会清除通道上设置的自定义 Asterisk 通道变量,而不是检查给定文件是否存在于文件系统中并返回 1 表示存在,0 表示不存在(就像它在以前的 Asterisk 版本)并在这样做时不理会自定义通道变量...?

不仅作为 STAT 参数传递的“recfile”(通过上面的 origin)被清除,“altfile”也被清除为空白——在扩展 7777 上调用 Asterisk 13“STAT”函数的那一刻。

如果经过测试,这个精确的拨号方案代码在 Asterisk 1.8.32.3 实例中可以完美运行。

有人可以帮忙吗?

谢谢

斯特凡

0 投票
1 回答
875 浏览

bash - Asterisk 13.22.0 - SHELL() 函数 - 不传递多个 Asterisk 变量

我已经放弃尝试使用 system() 来调用带有来自 Asterisk 13 的参数的 BASH 脚本。

结果在 Asterisk 13.22.0 System() 下有效,但前提是您不尝试将任何参数传递给被调用的脚本。

这有效,并且可靠地调用脚本:

但是,当您执行此操作时:

你得到

因此,我尝试使用 SHELL() 来做我试图用 SYSTEM() 做的事情。

这也不起作用,因为 SHELL() 显然只能解析发送给它的字符串中的一个星号参数。其余的都作为空白发送。

如果我这样做:

该脚本在拨号计划执行时看到:

例如。所有参数都存在 - 因为不需要解析变量引用。

如果我使用这个:

在执行时给出这个:

例如,我的变量已填充,如果我不操作它们,它们就有值。

在这种情况下,通过 SHELL() 调用的脚本会看到:

例如。SHELL() 显然只解析作为字符串传递给它的 FIRST Asterisk 变量,而从不解析后续变量引用。

任何人都可以确认或提出解决方案吗?

我迫切需要能够以某种方式执行外部 BASH 脚本并将多个参数传递给它们。在 1.8 中没有任何东西在 13 中有效...

谢谢!

斯特凡

0 投票
1 回答
1507 浏览

asterisk - Asterisk 13.22.0 - 队列响铃时没有为“代理”注册通道类型

使用以下配置,我只是在 Asterisk 13.22.0 CLI 中不断得到它:

每当呼叫者被发送到该代理队列时,登录的代理正在等待 Asterisk 13 上的呼叫。

3997和3998是我的两个代理。他们可以互相呼叫并接听来自其他分机的呼叫。他们可以从我的 PBX 中拨出电话,没问题。

我的agents.conf:

我的 queues.conf:

此外,将 ringinuse 设置为 on(将上面的成员行更改为末尾有“yes”)除了使错误“No channel type...”在 13.22.0 CLI 中出现两次呼叫者听到的每个外部振铃外,没有任何效果,如果在上面的两行中将 ringinuse 设置为“no”,而不是每个外部环一次。

通过以下方式登录 extensions.conf 中的代理:

代理登录的队列显示:

然后,如果从外部调用队列:

3916 从未接听,3997 或 3998 均未接听电话,两者都无限期地继续与 MOH 通话。

在 CLI 上不断出现这种情况,与 3916(“外部”电话)的每个响铃计时:

我究竟做错了什么?

预期是 3997 或 3998 将接收 SIP/3916 发出的传入呼叫。截至目前,3916 永远响铃,而 3997 和 3998 只是永远播放 MOH,上述错误在 3916 / 外部听到每个响铃时都会发出上述错误。

谢谢!

斯特凡

0 投票
1 回答
1149 浏览

lua - FreeSWITCH 中的 Lua 脚本在 bypass_media = true 时立即退出桥接

当我将“bypass_media”设置为 true 时,如何让脚本等待网桥终止后再继续?

这个片段 -

从音频的角度来看,它可以完美地与 bridge_media 设置为 true 或 false 一起工作,并且wireshark 跟踪显示音频通过 (false) 或端到端 (true)。

但是如果将 bypass 设置为 true,则脚本会继续运行而不会暂停,并且会话不再准备就绪(session:ready() == false)。

通道似乎进入了休眠状态,但是在桥接完成后我有家务要做,而我根本做不到。

如果我在 XML 拨号计划中进行桥接,也会发生同样的情况,立即继续导致我的内务处理提前触发。

FreeSWITCH (版本 1.6.20 git 43a9feb 2018-05-07 18:56:11Z 64bit) Lua 5.2

编辑 1 - 我可以让“api_hangup_hook=lua housekeeping.lua”工作,但是我必须传递大量变量,它会启动一个新的进程/线程/无论如何,这似乎有点矫枉过正,除非这是唯一的方法。

0 投票
1 回答
201 浏览

freeswitch - 具有 10 位以上正则表达式验证的免费 Switch?

当我们安装 Free-Switch... 默认情况下,我们将获得 20 个端点(1000.xml 到 1019.xml)。

  1. 如果我们想创建自己的端点,例如 +919885098850 或 +16308045480。我们怎么能做到这一点?

  2. 而不是在 Free-Switch 内部创建静态端点......如何在外部创建端点?

例如: 1. 我们将在 MySql 数据库中创建端点... 2. 我们将从 SIP 应用程序进行身份验证 3. 然后将呼叫转发到 Free-Switch 4. Free-Switch 将呼叫转发到目标端点。

有人可以解释一下如何实现这种情况吗?