VoIP Mailing List Archives
Mailing list archives for the VoIP community |
|
View previous topic :: View next topic |
Author |
Message |
delianspam at gmail.com Guest
|
Posted: Wed Aug 26, 2009 10:20 am Post subject: [Freeswitch-users] Timers/DTMFs During a Call |
|
|
Hello Everybody!
<![if !supportLists]>1. <![endif]>Scenario.
I am writing an IVR in Python that gets a destination from the calling party (party A) and then connects to the destination (party B).
When the call is CONNECTED, I want to:
<![if !supportLists]>- <![endif]>Receive DTMFs
<![if !supportLists]>- <![endif]>Have a timer that can call a certain function in my script. The script will have to play a message to party A.
<![if !supportLists]>- <![endif]>Have a timer that can call a certain function in my script. The script will have to drop the call.
Please notice that I want to do the things after the two parties are connected, and not after I send the Invite to party B.
<![if !supportLists]>2. <![endif]>Problem.
I will be happy to receive help on:
<![if !supportLists]>- <![endif]>Which methods should I look for to implement this.
<![if !supportLists]>3. <![endif]>Details
Here is how I connect the call currently:
session.execute("bridge",”sofia/internal/" + destination_number + "@domain.com”)
I have tried to create a timer callback function “my_method()” using:
ivr_timer =threading.Timer(30,my_method)
This never called the function “my_method()”.
Maybe I am wrong in using threading.Timer and the “bridge” application? Maybe I need to create a new thread and a new timer using the API of freeswitch, plus to use the “session.setInputCallback”, plus use a conference rather than a bridge? Can you please provide any suggestions or examples?
Thank you!
Best Regards, Delian Tashev |
|
Back to top |
|
|
msc at freeswitch.org Guest
|
Posted: Wed Aug 26, 2009 3:32 pm Post subject: [Freeswitch-users] Timers/DTMFs During a Call |
|
|
Do you actually need Python for the IVR, or is it that you're comfortable using a scripting lang for an IVR? I like using XML for IVRs, but using scripting langs does give you a bit more power & flexibility at the cost of some resources.
For the record, you can do this in the dialplan using XML and sched_api without touching a scripting language. Checkout the sched_api channel variable on the wiki - it may give you the functionality you need.
-MC
On Wed, Aug 26, 2009 at 7:59 AM, delianSPAM <delianspam@gmail.com (delianspam@gmail.com)> wrote:
Quote: |
Hello Everybody!
1. Scenario.
I am writing an IVR in Python that gets a destination from the calling party (party A) and then connects to the destination (party B).
When the call is CONNECTED, I want to:
- Receive DTMFs
- Have a timer that can call a certain function in my script. The script will have to play a message to party A.
- Have a timer that can call a certain function in my script. The script will have to drop the call.
Please notice that I want to do the things after the two parties are connected, and not after I send the Invite to party B.
2. Problem.
I will be happy to receive help on:
- Which methods should I look for to implement this.
3. Details
Here is how I connect the call currently:
session.execute("bridge",”sofia/internal/" + destination_number + "@domain.com”)
I have tried to create a timer callback function “my_method()” using:
ivr_timer =threading.Timer(30,my_method)
This never called the function “my_method()”.
Maybe I am wrong in using threading.Timer and the “bridge” application? Maybe I need to create a new thread and a new timer using the API of freeswitch, plus to use the “session.setInputCallback”, plus use a conference rather than a bridge? Can you please provide any suggestions or examples?
Thank you!
Best Regards, Delian Tashev
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org (FreeSWITCH-users@lists.freeswitch.org)
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
|
|
|
Back to top |
|
|
delianspam at gmail.com Guest
|
Posted: Thu Aug 27, 2009 1:49 am Post subject: [Freeswitch-users] Timers/DTMFs During a Call |
|
|
Hello Michael!
Thank you for your reply! I know about sched_api and I use Python as a scripting language. Also “sched_api” can be used inside python, using session.execute. However the problem is that the “sched_api” timer starts right after you initiate the SETUP of the second call leg. What I need is to call something, after a call CONNECT instead. One workaround would be if I can check what time it took to connect the call, but I do not know/see how to do this. I do not see a CONNECT callback function either.
Best Regards, Delian Tashev
P.S. Dear enlightened people, thank you for providing help to the community by replying to the list e-mails.
From: Michael Collins [mailto:msc@freeswitch.org]
Sent: Wednesday, August 26, 2009 11:28 PM
To: freeswitch-users@lists.freeswitch.org
Subject: Re: [Freeswitch-users] Timers/DTMFs During a Call
Do you actually need Python for the IVR, or is it that you're comfortable using a scripting lang for an IVR? I like using XML for IVRs, but using scripting langs does give you a bit more power & flexibility at the cost of some resources.
For the record, you can do this in the dialplan using XML and sched_api without touching a scripting language. Checkout the sched_api channel variable on the wiki - it may give you the functionality you need.
-MC
On Wed, Aug 26, 2009 at 7:59 AM, delianSPAM <delianspam@gmail.com (delianspam@gmail.com)> wrote:
Hello Everybody!
1. Scenario.
I am writing an IVR in Python that gets a destination from the calling party (party A) and then connects to the destination (party B).
When the call is CONNECTED, I want to:
- Receive DTMFs
- Have a timer that can call a certain function in my script. The script will have to play a message to party A.
- Have a timer that can call a certain function in my script. The script will have to drop the call.
Please notice that I want to do the things after the two parties are connected, and not after I send the Invite to party B.
2. Problem.
I will be happy to receive help on:
- Which methods should I look for to implement this.
3. Details
Here is how I connect the call currently:
session.execute("bridge",”sofia/internal/" + destination_number + "@domain.com”)
I have tried to create a timer callback function “my_method()” using:
ivr_timer =threading.Timer(30,my_method)
This never called the function “my_method()”.
Maybe I am wrong in using threading.Timer and the “bridge” application? Maybe I need to create a new thread and a new timer using the API of freeswitch, plus to use the “session.setInputCallback”, plus use a conference rather than a bridge? Can you please provide any suggestions or examples?
Thank you!
Best Regards, Delian Tashev
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org (FreeSWITCH-users@lists.freeswitch.org)
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org |
|
Back to top |
|
|
delianspam at gmail.com Guest
|
Posted: Thu Aug 27, 2009 2:00 am Post subject: [Freeswitch-users] Timers/DTMFs During a Call |
|
|
Looks like I was wrong about using the native Python timers. Here is how they can be used in your script:
# Imports – add these new imports
import time
import threading
# class definitions – add this new class
class Timer(threading.Thread):
def __init__(self, seconds):
self.runTime = seconds
threading.Thread.__init__(self)
def run(self):
time.sleep(self.runTime)
console_log("debug", "TIMER ********************")
# entry point – add two rows in the entry point function that is called from freeswitch
def handler(session, args):
…
t = Timer(10)
t.start()
…
So what is now remaining is to get when the call CONNECTS and how to get DTMFs during the call.
From: delianSPAM [mailto:delianspam@gmail.com]
Sent: Thursday, August 27, 2009 9:35 AM
To: 'freeswitch-users@lists.freeswitch.org'
Subject: RE: [Freeswitch-users] Timers/DTMFs During a Call
Hello Michael!
Thank you for your reply! I know about sched_api and I use Python as a scripting language. Also “sched_api” can be used inside python, using session.execute. However the problem is that the “sched_api” timer starts right after you initiate the SETUP of the second call leg. What I need is to call something, after a call CONNECT instead. One workaround would be if I can check what time it took to connect the call, but I do not know/see how to do this. I do not see a CONNECT callback function either.
Best Regards, Delian Tashev
P.S. Dear enlightened people, thank you for providing help to the community by replying to the list e-mails.
From: Michael Collins [mailto:msc@freeswitch.org]
Sent: Wednesday, August 26, 2009 11:28 PM
To: freeswitch-users@lists.freeswitch.org
Subject: Re: [Freeswitch-users] Timers/DTMFs During a Call
Do you actually need Python for the IVR, or is it that you're comfortable using a scripting lang for an IVR? I like using XML for IVRs, but using scripting langs does give you a bit more power & flexibility at the cost of some resources.
For the record, you can do this in the dialplan using XML and sched_api without touching a scripting language. Checkout the sched_api channel variable on the wiki - it may give you the functionality you need.
-MC
On Wed, Aug 26, 2009 at 7:59 AM, delianSPAM <delianspam@gmail.com (delianspam@gmail.com)> wrote:
Hello Everybody!
1. Scenario.
I am writing an IVR in Python that gets a destination from the calling party (party A) and then connects to the destination (party B).
When the call is CONNECTED, I want to:
- Receive DTMFs
- Have a timer that can call a certain function in my script. The script will have to play a message to party A.
- Have a timer that can call a certain function in my script. The script will have to drop the call.
Please notice that I want to do the things after the two parties are connected, and not after I send the Invite to party B.
2. Problem.
I will be happy to receive help on:
- Which methods should I look for to implement this.
3. Details
Here is how I connect the call currently:
session.execute("bridge",”sofia/internal/" + destination_number + "@domain.com”)
I have tried to create a timer callback function “my_method()” using:
ivr_timer =threading.Timer(30,my_method)
This never called the function “my_method()”.
Maybe I am wrong in using threading.Timer and the “bridge” application? Maybe I need to create a new thread and a new timer using the API of freeswitch, plus to use the “session.setInputCallback”, plus use a conference rather than a bridge? Can you please provide any suggestions or examples?
Thank you!
Best Regards, Delian Tashev
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org (FreeSWITCH-users@lists.freeswitch.org)
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org |
|
Back to top |
|
|
delianspam at gmail.com Guest
|
Posted: Thu Aug 27, 2009 2:06 am Post subject: [Freeswitch-users] Timers/DTMFs During a Call |
|
|
I will try to execute and parse from python:
freeswitch@internal> show channels
uuid,direction,created,created_epoch,name,state,cid_name,cid_num,ip_addr,dest,application,application_data,dialplan,context,read_codec,read_rate,write_codec,write_rate
53a62ebd-156c-4684-b616-740d7a5b609b,inbound,2009-04-23 11:14:09,1240510449,sofia/internal/1000@...,CS_EXECUTE,Mikey,1000,10.15.0.213,9999,playback,local_stream://moh,XML,default,PCMU,8000,PCMU,8000
Hoping that this will get the state of the call. If I call this check frequently I will catch the call connect I trust.
From: delianSPAM [mailto:delianspam@gmail.com]
Sent: Thursday, August 27, 2009 9:53 AM
To: 'freeswitch-users@lists.freeswitch.org'
Subject: RE: [Freeswitch-users] Timers/DTMFs During a Call
Looks like I was wrong about using the native Python timers. Here is how they can be used in your script:
# Imports – add these new imports
import time
import threading
# class definitions – add this new class
class Timer(threading.Thread):
def __init__(self, seconds):
self.runTime = seconds
threading.Thread.__init__(self)
def run(self):
time.sleep(self.runTime)
console_log("debug", "TIMER ********************")
# entry point – add two rows in the entry point function that is called from freeswitch
def handler(session, args):
…
t = Timer(10)
t.start()
…
So what is now remaining is to get when the call CONNECTS and how to get DTMFs during the call.
From: delianSPAM [mailto:delianspam@gmail.com]
Sent: Thursday, August 27, 2009 9:35 AM
To: 'freeswitch-users@lists.freeswitch.org'
Subject: RE: [Freeswitch-users] Timers/DTMFs During a Call
Hello Michael!
Thank you for your reply! I know about sched_api and I use Python as a scripting language. Also “sched_api” can be used inside python, using session.execute. However the problem is that the “sched_api” timer starts right after you initiate the SETUP of the second call leg. What I need is to call something, after a call CONNECT instead. One workaround would be if I can check what time it took to connect the call, but I do not know/see how to do this. I do not see a CONNECT callback function either.
Best Regards, Delian Tashev
P.S. Dear enlightened people, thank you for providing help to the community by replying to the list e-mails.
From: Michael Collins [mailto:msc@freeswitch.org]
Sent: Wednesday, August 26, 2009 11:28 PM
To: freeswitch-users@lists.freeswitch.org
Subject: Re: [Freeswitch-users] Timers/DTMFs During a Call
Do you actually need Python for the IVR, or is it that you're comfortable using a scripting lang for an IVR? I like using XML for IVRs, but using scripting langs does give you a bit more power & flexibility at the cost of some resources.
For the record, you can do this in the dialplan using XML and sched_api without touching a scripting language. Checkout the sched_api channel variable on the wiki - it may give you the functionality you need.
-MC
On Wed, Aug 26, 2009 at 7:59 AM, delianSPAM <delianspam@gmail.com (delianspam@gmail.com)> wrote:
Hello Everybody!
1. Scenario.
I am writing an IVR in Python that gets a destination from the calling party (party A) and then connects to the destination (party B).
When the call is CONNECTED, I want to:
- Receive DTMFs
- Have a timer that can call a certain function in my script. The script will have to play a message to party A.
- Have a timer that can call a certain function in my script. The script will have to drop the call.
Please notice that I want to do the things after the two parties are connected, and not after I send the Invite to party B.
2. Problem.
I will be happy to receive help on:
- Which methods should I look for to implement this.
3. Details
Here is how I connect the call currently:
session.execute("bridge",”sofia/internal/" + destination_number + "@domain.com”)
I have tried to create a timer callback function “my_method()” using:
ivr_timer =threading.Timer(30,my_method)
This never called the function “my_method()”.
Maybe I am wrong in using threading.Timer and the “bridge” application? Maybe I need to create a new thread and a new timer using the API of freeswitch, plus to use the “session.setInputCallback”, plus use a conference rather than a bridge? Can you please provide any suggestions or examples?
Thank you!
Best Regards, Delian Tashev
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org (FreeSWITCH-users@lists.freeswitch.org)
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org |
|
Back to top |
|
|
msc at freeswitch.org Guest
|
Posted: Thu Aug 27, 2009 2:09 am Post subject: [Freeswitch-users] Timers/DTMFs During a Call |
|
|
On Wed, Aug 26, 2009 at 11:35 PM, delianSPAM <delianspam@gmail.com (delianspam@gmail.com)> wrote:
Quote: |
Hello Michael!
Thank you for your reply! I know about sched_api and I use Python as a scripting language. Also “sched_api” can be used inside python, using session.execute. However the problem is that the “sched_api” timer starts right after you initiate the SETUP of the second call leg. What I need is to call something, after a call CONNECT instead. One workaround would be if I can check what time it took to connect the call, but I do not know/see how to do this. I do not see a CONNECT callback function either.
| Perhaps you could set this channel variable to the sched_api call?
http://wiki.freeswitch.org/wiki/Channel_Variables#execute_on_answer
-MC |
|
Back to top |
|
|
delianspam at gmail.com Guest
|
Posted: Thu Aug 27, 2009 2:41 am Post subject: [Freeswitch-users] Timers/DTMFs During a Call |
|
|
To get the state use:
session.getVariable("state")
I hope that I will solve the Timers puzzle soon. I am still looking on getting the DTMFs during a bridged call.
Best Regards, Delian Tashev
From: delianSPAM [mailto:delianspam@gmail.com]
Sent: Thursday, August 27, 2009 10:01 AM
To: freeswitch-users@lists.freeswitch.org
Subject: Re: [Freeswitch-users] Timers/DTMFs During a Call
I will try to execute and parse from python:
freeswitch@internal> show channels
uuid,direction,created,created_epoch,name,state,cid_name,cid_num,ip_addr,dest,application,application_data,dialplan,context,read_codec,read_rate,write_codec,write_rate
53a62ebd-156c-4684-b616-740d7a5b609b,inbound,2009-04-23 11:14:09,1240510449,sofia/internal/1000@...,CS_EXECUTE,Mikey,1000,10.15.0.213,9999,playback,local_stream://moh,XML,default,PCMU,8000,PCMU,8000
Hoping that this will get the state of the call. If I call this check frequently I will catch the call connect I trust.
From: delianSPAM [mailto:delianspam@gmail.com]
Sent: Thursday, August 27, 2009 9:53 AM
To: 'freeswitch-users@lists.freeswitch.org'
Subject: RE: [Freeswitch-users] Timers/DTMFs During a Call
Looks like I was wrong about using the native Python timers. Here is how they can be used in your script:
# Imports – add these new imports
import time
import threading
# class definitions – add this new class
class Timer(threading.Thread):
def __init__(self, seconds):
self.runTime = seconds
threading.Thread.__init__(self)
def run(self):
time.sleep(self.runTime)
console_log("debug", "TIMER ********************")
# entry point – add two rows in the entry point function that is called from freeswitch
def handler(session, args):
…
t = Timer(10)
t.start()
…
So what is now remaining is to get when the call CONNECTS and how to get DTMFs during the call.
From: delianSPAM [mailto:delianspam@gmail.com]
Sent: Thursday, August 27, 2009 9:35 AM
To: 'freeswitch-users@lists.freeswitch.org'
Subject: RE: [Freeswitch-users] Timers/DTMFs During a Call
Hello Michael!
Thank you for your reply! I know about sched_api and I use Python as a scripting language. Also “sched_api” can be used inside python, using session.execute. However the problem is that the “sched_api” timer starts right after you initiate the SETUP of the second call leg. What I need is to call something, after a call CONNECT instead. One workaround would be if I can check what time it took to connect the call, but I do not know/see how to do this. I do not see a CONNECT callback function either.
Best Regards, Delian Tashev
P.S. Dear enlightened people, thank you for providing help to the community by replying to the list e-mails.
From: Michael Collins [mailto:msc@freeswitch.org]
Sent: Wednesday, August 26, 2009 11:28 PM
To: freeswitch-users@lists.freeswitch.org
Subject: Re: [Freeswitch-users] Timers/DTMFs During a Call
Do you actually need Python for the IVR, or is it that you're comfortable using a scripting lang for an IVR? I like using XML for IVRs, but using scripting langs does give you a bit more power & flexibility at the cost of some resources.
For the record, you can do this in the dialplan using XML and sched_api without touching a scripting language. Checkout the sched_api channel variable on the wiki - it may give you the functionality you need.
-MC
On Wed, Aug 26, 2009 at 7:59 AM, delianSPAM <delianspam@gmail.com (delianspam@gmail.com)> wrote:
Hello Everybody!
1. Scenario.
I am writing an IVR in Python that gets a destination from the calling party (party A) and then connects to the destination (party B).
When the call is CONNECTED, I want to:
- Receive DTMFs
- Have a timer that can call a certain function in my script. The script will have to play a message to party A.
- Have a timer that can call a certain function in my script. The script will have to drop the call.
Please notice that I want to do the things after the two parties are connected, and not after I send the Invite to party B.
2. Problem.
I will be happy to receive help on:
- Which methods should I look for to implement this.
3. Details
Here is how I connect the call currently:
session.execute("bridge",”sofia/internal/" + destination_number + "@domain.com”)
I have tried to create a timer callback function “my_method()” using:
ivr_timer =threading.Timer(30,my_method)
This never called the function “my_method()”.
Maybe I am wrong in using threading.Timer and the “bridge” application? Maybe I need to create a new thread and a new timer using the API of freeswitch, plus to use the “session.setInputCallback”, plus use a conference rather than a bridge? Can you please provide any suggestions or examples?
Thank you!
Best Regards, Delian Tashev
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org (FreeSWITCH-users@lists.freeswitch.org)
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org |
|
Back to top |
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|