Warm transfers on Asterisk via the AMI - asterisk

Hi,
I'm busy developing a web interface for the asterisk PBX.
I'm looking for a way to initiate warm transfers via the web interface using the AMI.
I know that it's possible to initiate a warm transfer from the handset itself, but the requirement here is that it be done from the web interface.
I've done a fair amount of googling on the subject but I've not found anything thusfar.
Anybody know anything?
TIA.

To see all of the available manager commands, use the "manager show
commands" CLI command.
You can get more information about a manager command with the "manager
show command " CLI command in Asterisk.
https://wiki.asterisk.org/wiki/display/AST/AMI+Manager+Commands
You also can consult this page(note, that you still have check on your asterisk version like described above)
http://www.voip-info.org/wiki/view/Asterisk+manager+API
You are probably asking about Redirect command to some special context with dialplan support.

Related

Play record when operator pickup call

My description could be a little vague because I have not big experience in this field.
The problem is that my web service should do the following steps.
Another service send phone number in my web service
My web service takes that number and start calling into a particular queue in asterisk
After someone in this queue pickup call he\she should hear a recorded audio message
After that astersik should dial to the phone number from first step
Right now I can call to a local extension and then asterisk do the rest by calling to a client and connecting him with manager.
The first problem is that I don't know how to dial not to a local extension but to a queue in asterisk.
The second issue is how to play audio only when manager pick up call made from my web service.
Would be appreciate any help.
IF you use freepbx, you should put message in Call Confirm Announce
If you use custom dialplan, you should use M option for dial command and create macro which will play needed file.
For dial queue in freepbx you have use queue_num#from-internal. No way give any suggestion for custom dialplan
Note: doing system like that without understanding asterisk internal can result hi bills for international calls becuase of hackers.

Asterisk-java-1.0.0.m3.jar and Asterisk 11 issuue

Right Now I'm using Asterisk 11 on centos 6 operating system and using asterisk-java-1.0.0.m3.jar to establish communication between my java application and Asterisk 11.
I'm able to connect my java program with Asterisk
Issues I'm facing are
1.always at console message coming "Unsupported Version Asterisk Use at your own risk"
2.Unable to set property 'state interface' to 'SIP/0010' on org.asteriskjava.manager.event.QueueMemberStatusEvent:no setter found.Please report at http://jira.reucon.org/browse/AJ
My questions are:
1.Is there is asterisk-java-1.0.0.m3.jar source available anywhere so that i can edit source code and use it
2.I'm able to establish basic sip call,but getting issue as while making other type of calls which use other entities of same station like 0110 & 0210, which saved in extensions.conf & which work fine in Asterisk1.6 but not in Asterisk11.
As per my observation in Asterisk i added AppKonference module which is 3rd party module. & In java Program i write commands for that to establish channels using those entities.
But for communicate AppKonference in Asterisk API helps when Asterisk1.6 but not in 11.
Please suggest what I need to do is there is other asterisk and asterisk jar compatibility issue,if yes then what i need to do.
Please help
Sure, source can be found at
https://github.com/srt/asterisk-java
Also you can change agi compatability in /etc/asterisk/asterisk.conf

Asterisk AMI Atxfer on explicitely bridged channels

I'm trying to complete software which does all call logic via AMI on it's own using Asterisk only as interface to VOIP, SIP/GSM. Almost everything works great, but...:
Here is my scenario:
- incoming call is forwarded to announcement and then to MOH forever
- my app decides which extensions to dial (7777) using AMI Action: Originate
- once somebody picks up on extension, his/her channel (SIP/306-xxxxx for example) is bridged with waiting call's channel using AMI Action: Bridge
Until this point everything is working fine, both connected parties can hear each other, recording on demand works. All is fine.
Now I'm trying to make assisted transfer to another extension (Atxfer) using AMI on one of the bridged channels. And it doesn't work. I got couple of ami events about DTMF's on a channel (audio is muted while they are played). Every DTMF digit couses quick Bridge:unlink and Bridge:link event on AMI.
I tried to change dtmfmode, upgrade from asterisk 1.8 to 11 (asterisk now) and it always was the same.
While having this problems with Atxfer blind transfer on those channels works (using AMI Action: Redirect).
full log shows nothing something like this:
[2013-11-11 20:24:57] DEBUG[9457]: features.c:3740 feature_interpret: Feature interpret: chan=SIP/306-00000017, peer=SIP/GTS-00000016, code=*2, sense=1, features=0, dynamic=apprecord#apprecord
I recommend you read some asterisk book for beginner like ORelly's "Asterisk the future of telephony".
In you case correct solution is use asterisk Dial command for first channel instead of second call creation.
It is not clear how you do transfer using AMI. If you want do it via ami(which is VERY bad way), you have do something like following
On transfer request(digit) unbridge channels. Better put it in AsyncAGI after that.
Collect digits where to transfer using Read command
Transfer to new destination
If fail bridge again
NOTE: You resulting application will be really buggy and not scalable. AMI interface is not designed to do such things and work very bad when you have alot of actions and channels running on same box. So you have test your app under hi concurrent load to ensure it work(or more likly not work).

IVR - Tells you your cellphone credit

I was tasked with developing an application that would be able to tell someone their cellphone credit balance via some IVR system. I dont know where to begin. Does anyone have a knowledge of GSM who could be able to give me some directions for this project.
You should look into Asterisk AGI scripts. They allow you to do more than Asterisk API. I currently have lots of AGI scripts in Perl but it says that Java is also supported. Maybe this link will help you. Basically you will create some extended Java app which will return you current Balance. Asterisk IVR would read this value from AGI and then play it.
Asterisk may be a good solution for your problem. Asterisk provide the API Asterisk Gateway Interface(AGI), that allows you to control the call flow using an external programming language, including Java.
Some of the libraries/frameworks that implement AGI in Java are: astivetoolkit.org and asterisk-java.org.
Good luck.

How do I ping from Flex - AIR?

I'm bored cause my development server is down and I'm running the command prompt to ping the server indefinitely so that I'll see when they stop timing out and know that I can work again. In the meantime I wanted to make an Air app that will do this for me, so I can have it chirp or alarm or do something when it starts to be able to connect to the server.
So I need to start with having AIR do the ping, does anyone know how to do this? I can't find any help on it. I can't use the HTTPService because whatever it is that is broken (think it's the VPN), our dev web site is still up.
Thanks
Otherwise you can use the NativeProcess class of the AIR 2.0 beta, and use the ping command of your operating system.
You can find informations on how to use it here.
According to the docs, SocketMonitor, descending from ServiceMonitor will check basic availability, but not a true ping. If you want to truly "ping" the server, you would need to use a socket an implement the protocol, This link to the Wikipedia article might help.
The AIR SDK offers some classes (URLMonitor, SocketMonitor) to handle this:
http://livedocs.adobe.com/flex/3/html/help.html?content=network_connectivity_1.html

Resources