http://gnu-linux.org/xmpp-integration-with-asterisk.html

Xmpp stands for eXtensible Messaging and Presence Protocol, Its a widely used communication protocol. In this blog I will use Openfire an opensource xmpp server.
Asterisk is opensource telephony switching exchange service for linux. In this blog I am using FreePBX install on centos 6.5.
In this blog I assume that user has already install openfire and
asterisk server on linux machines. So I will start with creating a user
in openfire and intregate my opefire server with asterisk server and in
finally we will able to call from sip phone to xmpp client.

Step 1: Creating user in xmpp server

Login to openfire server. You will find the welcome screen as in image below and then click on user/session tab

Now provide the user information and click on create user as in image below.

Step 2: Starting Spark xmpp client

Download spark client on your linux machine.

wget http://www.igniterealtime.org/downloadServlet?filename=spark/spark_2_7_0.tar.gz

untar the file and run spark executable file

tar -xvzf spark_2_7_0.tar.gz
cd spark*
./spark

You will find the spark client starts as in image below.
provide user id, password which you created in openfire server and give server ip.

Now again go to your openfire server and click on session tab you will find status of the user online

Step 3:Enable SIP plugin to openfire

Download the SIP jar file

wget http://www.igniterealtime.org/projects/openfire/plugins/sip.jar

click on Plugins tab and upload your sip.jar file. after some time you will find phone tab inside the server tab

Note
The plugin work with openfire version 3.9.3

Step 4: Configure SIP user on asterisk
Now we need to configure sip.conf and extension.conf file to switch the call between asterisk and xmpp client.

sip configuration settings copy paste below code in your sip.conf,
more detail about this you will find in asterisk configuration blog.

[100]
username=100
type=friend
secret=123
record_out=never
record_in=never
qualify=no
port=5060
nat=never
host=dynamic
dtmfmode=rfc2833
call-limit=4
canreinivite=no
disallow=all
allow=all

extension.conf configuration

exten => 100,1,Dial(SIP/100,20)

Now restart your asterisk server

service asterisk restart

The above settings allow sip client to established call to xmpp client which is spark.

Step 5: Configure SIP phone on openfire

On your openfire interface go to Phone tab and then click on add new phone mapping and provide the detail as in image below.

SIP PHONE settings

XMPP username => user name of your openfire user.
SIP username => user name on your asterisk server which we configure in sip.conf
Authorization username => same as SIP username
PASSWORD => password of your SIP user.
SERVER => IP of asterisk server

click on create and you will find the page as below.

successful SIP mapping

Now all the configuration is done, finally you have to login to your spark and sip phone.

Step 6:
Make a call from SIP phone

I am using twinkle as my SIP phone now as a dial the extension number
100 which is of my xmpp client . I get a incoming call. check the image
below

incoming call from SIP phone

In the image you will find a box saying incoming call from the SIP user.

Once you accept the call it will get connected .

call accepted

So we successfully integrated XMPP (Openfire) with SIP (Asterisk).

In easy 6 step we have done this.

Xmpp integration with Asterisk的更多相关文章

  1. XMPP and Asterisk integration

    http://www.mundoopensource.com.br/en_page_xmpp_asterisk_pratical_example/ www.mundoopensource.com.br ...

  2. Github上的原文XMPP环境搭建步骤,英语能力差不多的可以看看

    Getting started using XMPPFramework on iOS Here is a post on StackOverflow describing how to install ...

  3. xmpp muc 群聊协议 4

    7. Occupant Use Cases The main actor in a multi-user chat environment is the occupant, who can be sa ...

  4. [转] Spring Integration 系统集成

    [From] http://blog.csdn.net/w_x_z_/article/details/53316618 pring Ingegration 提供了基于Spring的EIP(Enterp ...

  5. 转 asterisk app命令中文翻译

    常规指令 Authenticate:鉴别用户 VMAuthenticate:根据“voicemail.conf”鉴别用户 Curl:接受外接URLs的修复.支持POSTing DUNDiLookup: ...

  6. xmpp之配置Xcode(1)

    介绍 ios上的XMPPFramework你能够在Xcode/iPhoneXMPP 目录找到,它只是实现了XMPP的一小部分功能. 下面主要介绍在开发XMPPFramework ios应用之前的配置工 ...

  7. 在 Laravel 中使用图片处理库 Integration/Image

    系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7 ...

  8. 技术笔记:XMPP之openfire+spark+smack

    在即时通信这个领域目前只找到一个XMPP协议,在其协议基础上还是有许多成熟的产品,而且是开源的.所以还是想在这个领域多多了解一下. XMPP协议:具体的概念我就不写了,毕竟这东西网上到处是.简单的说就 ...

  9. 按照Enterprise Integration Pattern搭建服务系统

    在前一篇文章中,我们已经对Enterprise Integration Pattern中所包含的各个组成进行了简单地介绍.限于篇幅(20页Word以内),我并没有深入地讨论各个组成.但是如果要真正地按 ...

随机推荐

  1. [转载]Oracle基础知识

    一.oracle安装过程略 二.sys用户和system用户 (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限 默认密码是change_onins ...

  2. 对select into表复制的一点思考

    操作系统:Windows 2007 数据库版本:SQL Server 2008 R2 今天写存储过程遇到一个问题,用"Select 1 id,'Boss_he' into A"这样 ...

  3. strace跟踪操作的详细内容

  4. Object-C添加方法

    给实例变量添加getter方法: #import <Cocoa/Cocoa.h> @interface Photo:NSObject { NSString *caption; NSStri ...

  5. ThinkPHP 中使用 PHPMailer 发送邮件 支持163和QQ邮箱等

    [摘要]ThinkPHP是一个开源的PHP框架, 是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.本文介绍ThinkPHP 中使用 PHPMailer 发送邮件. PHP是自带可以发送邮件的Ma ...

  6. java学习之反射机制

    java语言区别于C,C++等准静态语言的最大特点就是java的反射机制.静态语言的最直接定义就是不能在运行时改变程序结构或变量的类型.按照这样的定义,python,ruby是动态语言,C,C++,J ...

  7. C# Delegate 异步调用

    namespace ConsoleApplication22 { /// /// 异步操作 /// /// /// /// //internal Func<int,int,int> int ...

  8. ES5中数组新增的方法说明

    一.前言-索引 ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for循环了. ES5中新增了写数组方法,如forEach (js v ...

  9. Type 类型

    修改 type 类型 UPDATE  wd_order2 SET  info = array_append(info, row(2,100001, now() )::info )  WHERE id_ ...

  10. cvThreshold()函数理解

    对图像二值化函数cvThreshold的理解 Threshold 对数组元素进行固定阈值操作 void cvThreshold( const CvArr* src, CvArr* dst, doubl ...