- 浏览: 417403 次
-
文章分类
- 全部博客 (327)
- Android (114)
- Java (13)
- Java基础 (14)
- Glib (2)
- linux (15)
- extjs (5)
- eclipse (2)
- Asterisk (56)
- MYSQL (6)
- 数据库 (9)
- PHP (7)
- C# (18)
- 杂谈~~ (1)
- web开发前端 (3)
- 网络编程 (2)
- Opensips (2)
- voip (3)
- debian (7)
- openfire (15)
- wordpress (1)
- 版本控制 (1)
- Android 线程服务广播 (1)
- SRTP (2)
- 单片机及ARM等 (3)
- 基础知识 (5)
- asp.net (2)
- 单片机 (1)
- 设计模式及架构 (1)
- 安全 (1)
- Cubieboard 草莓树莓各类派 Android开发板 (1)
- J2EE (2)
- BootStrap (3)
- BootStrap web前端开发 (1)
- web前端开发 (4)
- object-c (1)
- openwrt (8)
- 智能家居 (4)
- Node.js (4)
最新评论
-
xiaoxiecomeon:
你这个程序一存在线程的时间片相互抢占的问题,运行时间长了很可能 ...
Runnable 和 Thread -
dotjar:
我觉得话应该这么说:引用TestThread tt = new ...
Runnable 和 Thread -
dagf113225:
调用TelephonyManager的隐藏API是先参考Fra ...
Android提高第十四篇之探秘TelephonyManager
Have you ever wanted to write an Asterisk module? While some of the Asterisk modules are quite complicated, the anatomy of an Asterisk module is pretty simple. Let’s start with the “Hello World” of Asterisk modules: res_helloworld.
This example is based on Asterisk 1.6. However, creating Asterisk modules for Asterisk 1.4 is almost the exact same.
Create a file called res_helloworld.c in the res/ directory of an Asterisk source tree.
The first thing in every Asterisk module is to include the main Asterisk header file, asterisk.h.
#include "asterisk.h"
Next, include the ASTERISK_FILE_VERSION macro. This registers the file with the “core show file version” CLI command. This CLI command lists the last SVN revision where that file changed.
ASTERISK_FILE_VERSION(__FILE__, "$Revision: $")
Include the Asterisk module header file. This includes the definitions necessary for implementing an Asterisk module.
#include "asterisk/module.h"
Let’s go ahead and include the header file that lets us use the Asterisk logging interface, as well. This will let us print messages to the Asterisk log so that our new module actually does something.
#include "asterisk/logger.h"
It is now time to include the two functions that every Asterisk module must implement. Those are load_module() and unload_module(). These functions get called when Asterisk loads and unloads the module.
static int load_module(void) { ast_log(LOG_NOTICE, "Hello World!\n"); return AST_MODULE_LOAD_SUCCESS; } static int unload_module(void) { ast_log(LOG_NOTICE, "Goodbye World!\n"); return 0; }
Finally, every module must include an instance of one of the AST_MODULE_INFO macros. This macro includes the necessary code for the module to properly register itself with the Asterisk core when it gets loaded.
AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Hello World");
The final result should look something like this: res_helloworld.c
When you run make
to compile Asterisk, the build system should automatically find your module. It will be compiled and installed with the rest of Asterisk. Compile, install, and run Asterisk. Then, verify that your module has been loaded:
*CLI> module show like helloworld
Module Description Use Count
res_helloworld.so Hello World 0
1 modules loaded
You should also be able to unload and load your module, and see the appropriate message in the Asterisk logger.
*CLI> module unload res_helloworld.so
[Jun 19 10:50:57] NOTICE[26612]: res_helloworld.c:35 unload_module: Goodbye World!
*CLI> module load res_helloworld.so
[Jun 19 10:51:05] NOTICE[26612]: res_helloworld.c:42 load_module: Hello World!
Loaded res_helloworld.so => (Hello World)
Congratulations! You have successfully written an Asterisk module!
Next, we will start looking at how to start implementing more useful things inside of this module structure.
发表评论
-
Configuring an Asterisk server
2013-06-28 09:05 921Configuring an Asterisk server ... -
asterisk ami
2013-06-28 08:56 1413Asterisk Manager Interface主要提供 ... -
Originate Using Asterisk Local Channels
2013-01-24 17:30 1342Whenever you want to place a c ... -
Asterisk 1.8 chan_sip模块代码分析
2013-01-18 16:33 1936和以前版本相比,Asterisk在架构上有了不小的变动,本文 ... -
Asterisk Kernel analysis 2 channel
2013-01-17 17:44 843从内核的角度去分析问题时,弄清楚呼叫流程是非常关键的,只有 ... -
Asterisk Kernel analysis 1
2013-01-17 17:44 857一、内核初始化。 从 main入口。Asterisk ... -
astersik bridge 支持
2013-01-17 17:27 691为支持通话过程中双方按键的接受及处理,asterisk 通过 ... -
Asterisk 之${BRIDGEPEER} 函数说明
2013-01-17 16:38 704${BRIDGEPEER} :个人理解是 获取当前通道类型 ... -
Asterisk拨号函数Dial()详解
2012-12-27 13:33 1700Asterisk的拨号函数/命令是Dial,下面就介绍一 ... -
asterisk中常用函数说明
2012-12-15 11:56 964int ast_strlen_zero(co ... -
什么是1号信令、7号信令和PRI信令?
2012-04-11 14:26 1517按照信令的信道来分类,信令可以分为:随路信令和公共信道信 ... -
FreeSWITCH 与 Asterisk 比较
2012-03-29 15:45 3578VoIP通信,与传统的电话技术相比,不仅仅在于绝对的资费 ... -
Asterisk命令MeetMe详解
2012-03-29 14:44 1016MeetMe 概要 MeetMe ... -
Asterisk local channels
2012-03-12 15:09 861Asterisk local channels ... -
35个最棒的Asterisk免费应用
2012-03-12 14:51 2223Hi, I was looking round o ... -
Asterisk Originate 内部执行流程
2012-03-11 20:34 10121. originate的执行 向客户端发起呼叫,将客 ... -
模拟板卡疑难杂症(转)
2012-03-11 20:34 2254转自:http://sun4love.javaeye.c ... -
Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现
2012-03-11 20:34 983asterisk在正常通话过程中执行拨号计划中动作是通过 ... -
asterisk feature applicationmap 的caller和callee 的区别
2012-03-11 20:34 1017经过测试,在applicationmap 中定 ... -
asterisk中关于实现会议室meetme的笔记
2012-03-09 11:07 1942一、资料: 1.http: ...
相关推荐
docker-asterisk-lua 关闭看 具有星号和lua环境的Docker容器星号1.8 docker pull antirek / asterisk-lua:asterisk1.8星号11 泊坞窗拉antirek / asterisk-lua:asterisk11 docker pull antirek / asterisk-lua:...
Asterisk Dialplan是 Asterisk VoIP 服务器中的核心组件之一,它负责处理呼叫路由、通话控制和多种功能。Asterisk的拨号计划由一系列命令组成,这些命令用于定义呼叫流程并决定如何处理不同类型的呼叫事件。以下是...
**Qt-Asterisk-Desktop: Asterisk PBX系统的Qt桌面应用详解** Qt-Asterisk-Desktop是一个基于Qt库开发的桌面应用程序,专为Asterisk Private Branch eXchange (PBX)系统设计。Asterisk是一款开源的IP电话系统,能够...
Asterisk-Java是一个Java库,它为Asterisk系统提供了AGI(Asterisk Gateway Interface)的实现,方便开发者用Java语言进行Asterisk系统的接口开发。AGI是Asterisk的一个强大特性,允许外部应用程序在呼叫处理过程中...
关于该软件包包含用于Asterisk REST接口的Python客户端库。 它建立在库的基础上,相对于生成的API提供了改进的,特定于Asterisk的API用法使用setup.py脚本从源代码安装。 $ sudo ./setup.py install原料药ARI客户端...
Asterisk是一个开源的IP电话系统,而Asterisk-java则是一个Java库,它提供了与Asterisk服务器交互的能力。这个库使得开发者可以利用Java语言来控制和编程Asterisk PBX(Private Branch eXchange),执行诸如创建、...
1. **API接口**:Asterisk-java提供了一系列的Java类和接口,如ManagerConnection用于建立和管理与Asterisk Manager Interface的连接,ManagerEventListener用于监听Asterisk服务器的事件,Channel类则用于操作通话...
适用于Asterisk-Java的自述文件 介绍 Asterisk-Java软件包包含一组Java类,使您可以轻松构建与交互的Java应用程序。 Asterisk-Java支持Asterisk为此场景提供的两个接口: 协议和 。 您可以在这里找到最新版本的Java...
$ npm i asterisk-ami-connector NodeJS版本 支持>=4.0.0 用法 具有承诺的基本示例。 const connector = require ( 'asterisk-ami-connector' ) ( { reconnect : true } ) ; connector . connect ( 'login' , '...
【描述】中提到的"Asterisk 18"是 Asterisk 开源通信平台的一个主要版本,这是一个广泛使用的 PBX(Private Branch Exchange,私人交换机)系统,能够支持VoIP服务。Asterisk 提供了丰富的功能,如语音通话、会议、...
- Channel: 需要挂断的通道名称,如SIP/123-1c20。 - Timeout: 通道应该挂断的秒数。 - 示例: ``` Action: AbsoluteTimeout Channel: SIP/123-1c20 Timeout: 20 ``` 2. **ChangeMonitor**:更改记录某通道...
亚娜Yana 是另一个用于 Asterisk Manager Interface 的 node.js 库。 支持的 Asterisk 版本:全部(主要使用 Asterisk 11、13 和 16 进行测试)。 支持的 node.js 版本:12+。 小(约 350 行代码) 没有依赖低级...
或者,如果你使用Asterisk预先录制的语音和音乐文件,这些文件是听不到的,因为它们不是在AMR中而是在slin中。 因此,该存储库不仅为音频编解码器 AMR 和 AMR-WB 添加了格式模块,还添加了一个转码模块: codecs/...
#Asterisk Opus/VP8 补丁 由于 Opus 和 VP8 目前无法集成到 Asterisk 存储库中(在此了解原因),我们准备了一个补丁,为添加对两种编解码器(Opus 转码、VP8 直通)的支持。 ##安装补丁为了支持Opus,你需要先安装...
码头工人星号 用于 Asterisk PBX 的 Dockerfile
1. **アイコン (アイコン)** - Icon:这是计算机界面上的小图形,代表一个功能或应用程序。 2. **アイテム ( 아이템)** - Item:通常指列表或菜单中的一个条目或元素。 3. **アイデア (アイデア)** - Idea:在软件...
Asterisk录音记录(SQLServer)1 在Asterisk PBX系统中,录音记录是非常重要的功能,它允许管理员和用户追踪通话记录以便于分析、审计或存档。本篇文章将介绍如何利用SQL Server来存储Asterisk的录音记录,并对其进行...
:eight-spoked_asterisk: 好极了! :eight-spoked_asterisk: 测试ge 测试一下... 通过此操作进行编译。 # setup steps : - name : checkout uses : actions/checkout@v2 - name : rewriteReadme uses : ...
Simple-Click2Call-for-Asterisk-PBX 将 click2dial.php 复制到您的 Asterisk 服务器 (/var/www/html) 上的 web 文件夹中。 以 root 身份登录您的 Asterisk 服务器并编辑文件:nano -w /var/...
在给定的压缩包文件中,我们看到包含了一个名为"asterisk-java"的子文件,这可能是一个Java库,专门用于与Asterisk AMI进行通信。 Asterisk AMI接口基于TCP/IP协议,通常默认运行在5038端口上。它使用文本协议,每...