Sponsor: VoiceMeUp - Corporate & Wholesale VoIP Services

VoIP Mailing List Archives
Mailing list archives for the VoIP community
 SearchSearch 

[Freeswitch-users] Timers/DTMFs During a Call


 
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> freeSWITCH Users
View previous topic :: View next topic  
Author Message
delianspam at gmail.com
Guest





PostPosted: Wed Aug 26, 2009 10:20 am    Post subject: [Freeswitch-users] Timers/DTMFs During a Call Reply with quote

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





PostPosted: Wed Aug 26, 2009 3:32 pm    Post subject: [Freeswitch-users] Timers/DTMFs During a Call Reply with quote

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





PostPosted: Thu Aug 27, 2009 1:49 am    Post subject: [Freeswitch-users] Timers/DTMFs During a Call Reply with 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.

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





PostPosted: Thu Aug 27, 2009 2:00 am    Post subject: [Freeswitch-users] Timers/DTMFs During a Call Reply with quote

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





PostPosted: Thu Aug 27, 2009 2:06 am    Post subject: [Freeswitch-users] Timers/DTMFs During a Call Reply with quote

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





PostPosted: Thu Aug 27, 2009 2:09 am    Post subject: [Freeswitch-users] Timers/DTMFs During a Call Reply with quote

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





PostPosted: Thu Aug 27, 2009 2:41 am    Post subject: [Freeswitch-users] Timers/DTMFs During a Call Reply with quote

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
Display posts from previous:   
Post new topic   Reply to topic    VoIP Mailing List Archives Forum Index -> freeSWITCH Users All times are GMT - 5 Hours
Page 1 of 1

 
Jump to:  
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

VoiceMeUp - Corporate & Wholesale VoIP Services