Hello Freeswitch-dev! I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows: 1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan. I have some questions for the FS developer community. First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community. Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated. Thanks!
Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH -----Original Message----- From: freeswitch-dev-bounces@lists.freeswitch.org [mailto:freeswitch-dev-bounces@lists.freeswitch.org] On Behalf Of Kurtis Heimerl Sent: Monday, July 04, 2011 12:50 AM To: freeswitch-dev@lists.freeswitch.org Subject: [Freeswitch-dev] Chat Dialplan Hello Freeswitch-dev! I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows: 1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan. I have some questions for the FS developer community. First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community. Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated. Thanks! _______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
To be clear SIMPLE is a collection of standards that includes message exchange using the MESSAGE method. On Mon, Jul 4, 2011 at 4:48 AM, Abdul Hakeem <alhakeem@gmail.com> wrote:
Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH
-- Kristian Kielhofner
Looks nice, count me in for testing once you have something! François. On Sun, 2011-07-03 at 16:49 -0700, Kurtis Heimerl wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works? -Steve On 4 July 2011 00:49, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Soa: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing. we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat. When a from user on chat contains +: each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace. Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc. Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR. I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality. On Sun, Jul 3, 2011 at 6:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
I forgot to disable digest mode, and so I have 5 emails to respond to in 2 received mails. Instead, I'm going to address the highlights here: Steven Ayre <steveayre@gmail.com> said: "Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works? -Steve" I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth! "Abdul Hakeem" <alhakeem@gmail.com> said: "Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH" So far as my current architectural vision, any module implementing a MESSAGE event should be able to trigger a dialplan action. My plan is to start with Sofia, so it would support SIMPLE. Others should be pretty easy as well. Lastly, Anthony Minessale <anthony.minessale@gmail.com> said: "This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing. we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat. When a from user on chat contains +: each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace. Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc. Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR. I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality." I need a programmatic layer for routing messages. What's currently in FS is (seemingly) unable to do this. I'm aware that the current system routes messages to users correctly; I don't think it enables any sort of interesting programmatic access. For instance, building a system that receives a message and immediately starts a call is not something I think can be currently done. The dialplan abstraction is well-understood by FS users, and an extension I think could provide a lot of value. I don't think these changes will regress any functionality either. I proposed adding a configuration flag that switched between behaviors, so that existing functionality won't be modified. Lastly, sending this email was part of me trying to understand the current system. Thanks for the direction. If I'm wrong, and there's a simple way to provide programmatic access, I'd love to hear about it. That's a lot less work for me! On Sun, Jul 3, 2011 at 4:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
I believe that these messages show up as events on ESL, don't they? Therefore you can do whatever from there... Regards, João Mesquita On Tue, Jul 5, 2011 at 11:31 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
I forgot to disable digest mode, and so I have 5 emails to respond to in 2 received mails. Instead, I'm going to address the highlights here:
Steven Ayre <steveayre@gmail.com> said: "Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works?
-Steve"
I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
"Abdul Hakeem" <alhakeem@gmail.com> said: "Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH"
So far as my current architectural vision, any module implementing a MESSAGE event should be able to trigger a dialplan action. My plan is to start with Sofia, so it would support SIMPLE. Others should be pretty easy as well.
Lastly, Anthony Minessale <anthony.minessale@gmail.com> said: "This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing.
we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat.
When a from user on chat contains +:
each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace.
Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc.
Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR.
I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality."
I need a programmatic layer for routing messages. What's currently in FS is (seemingly) unable to do this. I'm aware that the current system routes messages to users correctly; I don't think it enables any sort of interesting programmatic access. For instance, building a system that receives a message and immediately starts a call is not something I think can be currently done. The dialplan abstraction is well-understood by FS users, and an extension I think could provide a lot of value.
I don't think these changes will regress any functionality either. I proposed adding a configuration flag that switched between behaviors, so that existing functionality won't be modified. Lastly, sending this email was part of me trying to understand the current system. Thanks for the direction.
If I'm wrong, and there's a simple way to provide programmatic access, I'd love to hear about it. That's a lot less work for me!
On Sun, Jul 3, 2011 at 4:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
I don't think so. I set the ESL to log all events (/event all) from the command line and received no events when sofia received SIMPLE messages. Is that a bug? I had assumed it's intentional. 2011/7/5 João Mesquita <jmesquita@freeswitch.org>:
I believe that these messages show up as events on ESL, don't they? Therefore you can do whatever from there...
Regards, João Mesquita
On Tue, Jul 5, 2011 at 11:31 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I forgot to disable digest mode, and so I have 5 emails to respond to in 2 received mails. Instead, I'm going to address the highlights here:
Steven Ayre <steveayre@gmail.com> said: "Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works?
-Steve"
I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
"Abdul Hakeem" <alhakeem@gmail.com> said: "Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH"
So far as my current architectural vision, any module implementing a MESSAGE event should be able to trigger a dialplan action. My plan is to start with Sofia, so it would support SIMPLE. Others should be pretty easy as well.
Lastly, Anthony Minessale <anthony.minessale@gmail.com> said: "This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing.
we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat.
When a from user on chat contains +:
each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace.
Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc.
Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR.
I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality."
I need a programmatic layer for routing messages. What's currently in FS is (seemingly) unable to do this. I'm aware that the current system routes messages to users correctly; I don't think it enables any sort of interesting programmatic access. For instance, building a system that receives a message and immediately starts a call is not something I think can be currently done. The dialplan abstraction is well-understood by FS users, and an extension I think could provide a lot of value.
I don't think these changes will regress any functionality either. I proposed adding a configuration flag that switched between behaviors, so that existing functionality won't be modified. Lastly, sending this email was part of me trying to understand the current system. Thanks for the direction.
If I'm wrong, and there's a simple way to provide programmatic access, I'd love to hear about it. That's a lot less work for me!
On Sun, Jul 3, 2011 at 4:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
I don't think so. I set the ESL to log all events (/event all) from the command line and received no events when sofia received SIMPLE messages. Is that a bug? I had assumed it's intentional.
I'm 99% sure that those messages never make it up into FS from Sofia. I'd go look into the code but Sofia is really scary and there's no amount of Scooby Snacks you could give me to convince me to wander into that creepy old code. :) -MC
Read my response and my mod conference example again. You can register a chat callback from any module bound to a particular namespace....... On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote:
On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu wrote:
I don't think so. I set the ESL to log all events (/event all) from the command line and received no events when sofia received SIMPLE messages. Is that a bug? I had assumed it's intentional.
I'm 99% sure that those messages never make it up into FS from Sofia. I'd go look into the code but Sofia is really scary and there's no amount of Scooby Snacks you could give me to convince me to wander into that creepy old code. :) -MC
I think I understand it. Basically, a client can prepend a +code that causes the message to be routed to a specific module. I don't think that fulfills my requirements. This is fine for basic routing, but it's not a very good programmable environment for chat applications, unless I'm missing something, which is always possible. If I am, can you direct me to anything that explains it in a little more depth than your email? On Tue, Jul 5, 2011 at 10:49 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Read my response and my mod conference example again. You can register a chat callback from any module bound to a particular namespace.......
On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote:
On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
I don't think so. I set the ESL to log all events (/event all) from the command line and received no events when sofia received SIMPLE messages. Is that a bug? I had assumed it's intentional.
I'm 99% sure that those messages never make it up into FS from Sofia. I'd go look into the code but Sofia is really scary and there's no amount of Scooby Snacks you could give me to convince me to wander into that creepy old code. :) -MC
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
Are we talking about that ridiculous new chat concept in SIP where it uses INVITES and dialogs? On Wed, Jul 6, 2011 at 12:56 AM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I think I understand it. Basically, a client can prepend a +code that causes the message to be routed to a specific module. I don't think that fulfills my requirements. This is fine for basic routing, but it's not a very good programmable environment for chat applications, unless I'm missing something, which is always possible.
If I am, can you direct me to anything that explains it in a little more depth than your email?
On Tue, Jul 5, 2011 at 10:49 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Read my response and my mod conference example again. You can register a chat callback from any module bound to a particular namespace.......
On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote:
On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
I don't think so. I set the ESL to log all events (/event all) from the command line and received no events when sofia received SIMPLE messages. Is that a bug? I had assumed it's intentional.
I'm 99% sure that those messages never make it up into FS from Sofia. I'd go look into the code but Sofia is really scary and there's no amount of Scooby Snacks you could give me to convince me to wander into that creepy old code. :) -MC
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
Nope, normal SIP MESSAGE events, no invites. I just need an easy place where an app can look up some variables in the directory, check presence information, and start a call based on an incoming chat event. I also need a system that interops with existing SIP chat services. I don't think the +routing does these for me. On Wed, Jul 6, 2011 at 8:46 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Are we talking about that ridiculous new chat concept in SIP where it uses INVITES and dialogs?
On Wed, Jul 6, 2011 at 12:56 AM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I think I understand it. Basically, a client can prepend a +code that causes the message to be routed to a specific module. I don't think that fulfills my requirements. This is fine for basic routing, but it's not a very good programmable environment for chat applications, unless I'm missing something, which is always possible.
If I am, can you direct me to anything that explains it in a little more depth than your email?
On Tue, Jul 5, 2011 at 10:49 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Read my response and my mod conference example again. You can register a chat callback from any module bound to a particular namespace.......
On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote:
On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
I don't think so. I set the ESL to log all events (/event all) from the command line and received no events when sofia received SIMPLE messages. Is that a bug? I had assumed it's intentional.
I'm 99% sure that those messages never make it up into FS from Sofia. I'd go look into the code but Sofia is really scary and there's no amount of Scooby Snacks you could give me to convince me to wander into that creepy old code. :) -MC
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
you control the user names on your system the prefix+ string is just part of the username people would talk to. for instance ext+ namespace is has auto presence built in so if you add ext+1000 to your list it will auto advertise that it's online. conf+ goes to the conference. conf+888@server.com will go to FS on server.com and route the chat messages to the mod_conference. so basically you are proposing to try to modify sofia and break the other stuff because you do not like the prefix string on the user names but its designed to allow you to cross connect protocols, eg mod_sofia has sip+ registered and mod_dingaling has jingle+ so you can use jabber to pass sip+user@domain.com to your buddy list and have it report accurate presence. Basically you make a new module called mod_foo and register the foo namespace. Then on your clients you subscribe to foo+1000@server.com for instance. Chat messages to that foo namespace will arrive in your code and you have the option to reply to them completely agnostic of the protocol sip, jabber etc. You seem to be asking for advice but then ignoring it coming from the author of all of the above who spent many man hours solving this problem so it would be abstract. so I'm lost for what else to tell you. Maybe we can confirm that you are simply taken aback by the idea of starting all your usernames with foo+ and simply propose to unravel everything in pursuit of removing it? On Wed, Jul 6, 2011 at 6:14 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Nope, normal SIP MESSAGE events, no invites.
I just need an easy place where an app can look up some variables in the directory, check presence information, and start a call based on an incoming chat event. I also need a system that interops with existing SIP chat services. I don't think the +routing does these for me.
On Wed, Jul 6, 2011 at 8:46 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Are we talking about that ridiculous new chat concept in SIP where it uses INVITES and dialogs?
On Wed, Jul 6, 2011 at 12:56 AM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I think I understand it. Basically, a client can prepend a +code that causes the message to be routed to a specific module. I don't think that fulfills my requirements. This is fine for basic routing, but it's not a very good programmable environment for chat applications, unless I'm missing something, which is always possible.
If I am, can you direct me to anything that explains it in a little more depth than your email?
On Tue, Jul 5, 2011 at 10:49 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Read my response and my mod conference example again. You can register a chat callback from any module bound to a particular namespace.......
On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote:
On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
I don't think so. I set the ESL to log all events (/event all) from the command line and received no events when sofia received SIMPLE messages. Is that a bug? I had assumed it's intentional.
I'm 99% sure that those messages never make it up into FS from Sofia. I'd go look into the code but Sofia is really scary and there's no amount of Scooby Snacks you could give me to convince me to wander into that creepy old code. :) -MC
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
Let me repeat myself: the changes I am proposing will be backwards compatible. Nothing will be broken. The dialplan abstraction is tangential to this whole discussion. I can build a mod foo which runs the dialplan, and have all messages routed to it via the + mechanism. This will probably be my initial version of the system. I understand the work you put into this, and that your decisions were well-reasoned for the use cases you envisioned (e.g., conference calls), but the abstraction isn't working for me. This system is just a piece, interoperating with a variety of other systems. Attaching a specific module tag, used by just one piece of one program, to a username in use throughout the entire system is not an elegant solution. This means I have to put a proxy in front of FS, adding this + tag to every message coming in. I'm here and open to any solutions you might have to make the existing solution work for me. Fundamentally, I can't just shove a +tag onto every incoming message in any elegant way, so far as I know. I think that means this entire line of reasoning is just broken for me. Don't get me wrong here, I would be really really happy if I didn't have to touch sofia to solve this, it's really hard to grok. It's also a lot less work for me. So far, I've proposed one alternate method for doing this. I want sofia to generate events and not route messages itself. Then I can listen to these perform whatever actions I need to. This may not work, and I'm open to implementing any other architectural changes you think would enable my use case. You're clearly the guy who knows what to do, and your advice is invaluable. On Wed, Jul 6, 2011 at 5:23 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
you control the user names on your system the prefix+ string is just part of the username people would talk to.
for instance ext+ namespace is has auto presence built in so if you add ext+1000 to your list it will auto advertise that it's online.
conf+ goes to the conference.
conf+888@server.com will go to FS on server.com and route the chat messages to the mod_conference.
so basically you are proposing to try to modify sofia and break the other stuff because you do not like the prefix string on the user names but its designed to allow you to cross connect protocols, eg mod_sofia has sip+ registered and mod_dingaling has jingle+ so you can use jabber to pass sip+user@domain.com to your buddy list and have it report accurate presence.
Basically you make a new module called mod_foo and register the foo namespace. Then on your clients you subscribe to foo+1000@server.com for instance. Chat messages to that foo namespace will arrive in your code and you have the option to reply to them completely agnostic of the protocol sip, jabber etc.
You seem to be asking for advice but then ignoring it coming from the author of all of the above who spent many man hours solving this problem so it would be abstract. so I'm lost for what else to tell you.
Maybe we can confirm that you are simply taken aback by the idea of starting all your usernames with foo+ and simply propose to unravel everything in pursuit of removing it?
On Wed, Jul 6, 2011 at 6:14 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Nope, normal SIP MESSAGE events, no invites.
I just need an easy place where an app can look up some variables in the directory, check presence information, and start a call based on an incoming chat event. I also need a system that interops with existing SIP chat services. I don't think the +routing does these for me.
On Wed, Jul 6, 2011 at 8:46 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Are we talking about that ridiculous new chat concept in SIP where it uses INVITES and dialogs?
On Wed, Jul 6, 2011 at 12:56 AM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I think I understand it. Basically, a client can prepend a +code that causes the message to be routed to a specific module. I don't think that fulfills my requirements. This is fine for basic routing, but it's not a very good programmable environment for chat applications, unless I'm missing something, which is always possible.
If I am, can you direct me to anything that explains it in a little more depth than your email?
On Tue, Jul 5, 2011 at 10:49 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Read my response and my mod conference example again. You can register a chat callback from any module bound to a particular namespace.......
On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote:
On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
> I don't think so. I set the ESL to log all events (/event all) from > the command line and received no events when sofia received SIMPLE > messages. Is that a bug? I had assumed it's intentional. > I'm 99% sure that those messages never make it up into FS from Sofia. I'd go look into the code but Sofia is really scary and there's no amount of Scooby Snacks you could give me to convince me to wander into that creepy old code. :) -MC
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
I think the missing point is that you are terminating point for the user so the foo+1234 *is* what people use as the user name when talking to the system. Whatever you clearly are not interested in that...... You basically want to modify every channel to fire an event when it gets an inbound chat message so anybody can subscribe to them. SWITCH_EVENT_MESSAGE is already used for something you will need SWITCH_EVENT_RECV_MESSAGE similar to mod_dptools.c 3260 and put it at sofia_presence.c 2921 inside the else this really should be wrapped into a profile param to enable it so it's not firing all these events unless someone really wants it to. see endless config options being parsed in config_sofia and reconfig_sofia that set profile flags...... Now tell all your friends at Berkeley to come to ClueCon this year and we'll see about a student discount! On Wed, Jul 6, 2011 at 7:50 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Let me repeat myself: the changes I am proposing will be backwards compatible. Nothing will be broken.
The dialplan abstraction is tangential to this whole discussion. I can build a mod foo which runs the dialplan, and have all messages routed to it via the + mechanism. This will probably be my initial version of the system. I understand the work you put into this, and that your decisions were well-reasoned for the use cases you envisioned (e.g., conference calls), but the abstraction isn't working for me. This system is just a piece, interoperating with a variety of other systems. Attaching a specific module tag, used by just one piece of one program, to a username in use throughout the entire system is not an elegant solution. This means I have to put a proxy in front of FS, adding this + tag to every message coming in.
I'm here and open to any solutions you might have to make the existing solution work for me. Fundamentally, I can't just shove a +tag onto every incoming message in any elegant way, so far as I know. I think that means this entire line of reasoning is just broken for me. Don't get me wrong here, I would be really really happy if I didn't have to touch sofia to solve this, it's really hard to grok. It's also a lot less work for me.
So far, I've proposed one alternate method for doing this. I want sofia to generate events and not route messages itself. Then I can listen to these perform whatever actions I need to. This may not work, and I'm open to implementing any other architectural changes you think would enable my use case. You're clearly the guy who knows what to do, and your advice is invaluable.
On Wed, Jul 6, 2011 at 5:23 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
you control the user names on your system the prefix+ string is just part of the username people would talk to.
for instance ext+ namespace is has auto presence built in so if you add ext+1000 to your list it will auto advertise that it's online.
conf+ goes to the conference.
conf+888@server.com will go to FS on server.com and route the chat messages to the mod_conference.
so basically you are proposing to try to modify sofia and break the other stuff because you do not like the prefix string on the user names but its designed to allow you to cross connect protocols, eg mod_sofia has sip+ registered and mod_dingaling has jingle+ so you can use jabber to pass sip+user@domain.com to your buddy list and have it report accurate presence.
Basically you make a new module called mod_foo and register the foo namespace. Then on your clients you subscribe to foo+1000@server.com for instance. Chat messages to that foo namespace will arrive in your code and you have the option to reply to them completely agnostic of the protocol sip, jabber etc.
You seem to be asking for advice but then ignoring it coming from the author of all of the above who spent many man hours solving this problem so it would be abstract. so I'm lost for what else to tell you.
Maybe we can confirm that you are simply taken aback by the idea of starting all your usernames with foo+ and simply propose to unravel everything in pursuit of removing it?
On Wed, Jul 6, 2011 at 6:14 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Nope, normal SIP MESSAGE events, no invites.
I just need an easy place where an app can look up some variables in the directory, check presence information, and start a call based on an incoming chat event. I also need a system that interops with existing SIP chat services. I don't think the +routing does these for me.
On Wed, Jul 6, 2011 at 8:46 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Are we talking about that ridiculous new chat concept in SIP where it uses INVITES and dialogs?
On Wed, Jul 6, 2011 at 12:56 AM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I think I understand it. Basically, a client can prepend a +code that causes the message to be routed to a specific module. I don't think that fulfills my requirements. This is fine for basic routing, but it's not a very good programmable environment for chat applications, unless I'm missing something, which is always possible.
If I am, can you direct me to anything that explains it in a little more depth than your email?
On Tue, Jul 5, 2011 at 10:49 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Read my response and my mod conference example again. You can register a chat callback from any module bound to a particular namespace.......
On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote: > On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl > <kheimerl@cs.berkeley.edu>wrote: > >> I don't think so. I set the ESL to log all events (/event all) from >> the command line and received no events when sofia received SIMPLE >> messages. Is that a bug? I had assumed it's intentional. >> > I'm 99% sure that those messages never make it up into FS from Sofia. I'd > go > look into the code but Sofia is really scary and there's no amount of > Scooby > Snacks you could give me to convince me to wander into that creepy old > code. > :) > -MC
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
This particular work is in combination with OpenBTS, and they are terrible about user names. I basically need as much flexibility as possible, because the SMSC/BTS/HLR are all likely to tell me exactly what user names they're willing to accept. Considering it's likely I'm going to have to work with existing HLRs... you see the problem. Thanks for the direction! That will speed this process up significantly. There are a bunch of us using freeswitch here at Berkeley. Awaaz.de (http://awaaz.de/) for instance, is helping hundreds of farmers in rural India right now. I'd love to come out for cluecon, buy you a beer, and argue in person. We'll see if my advisor is willing to pay for such a trip! On Wed, Jul 6, 2011 at 6:21 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
I think the missing point is that you are terminating point for the user so the foo+1234 *is* what people use as the user name when talking to the system. Whatever you clearly are not interested in that......
You basically want to modify every channel to fire an event when it gets an inbound chat message so anybody can subscribe to them. SWITCH_EVENT_MESSAGE is already used for something you will need SWITCH_EVENT_RECV_MESSAGE
similar to mod_dptools.c 3260
and put it at sofia_presence.c 2921 inside the else
this really should be wrapped into a profile param to enable it so it's not firing all these events unless someone really wants it to. see endless config options being parsed in config_sofia and reconfig_sofia that set profile flags......
Now tell all your friends at Berkeley to come to ClueCon this year and we'll see about a student discount!
On Wed, Jul 6, 2011 at 7:50 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Let me repeat myself: the changes I am proposing will be backwards compatible. Nothing will be broken.
The dialplan abstraction is tangential to this whole discussion. I can build a mod foo which runs the dialplan, and have all messages routed to it via the + mechanism. This will probably be my initial version of the system. I understand the work you put into this, and that your decisions were well-reasoned for the use cases you envisioned (e.g., conference calls), but the abstraction isn't working for me. This system is just a piece, interoperating with a variety of other systems. Attaching a specific module tag, used by just one piece of one program, to a username in use throughout the entire system is not an elegant solution. This means I have to put a proxy in front of FS, adding this + tag to every message coming in.
I'm here and open to any solutions you might have to make the existing solution work for me. Fundamentally, I can't just shove a +tag onto every incoming message in any elegant way, so far as I know. I think that means this entire line of reasoning is just broken for me. Don't get me wrong here, I would be really really happy if I didn't have to touch sofia to solve this, it's really hard to grok. It's also a lot less work for me.
So far, I've proposed one alternate method for doing this. I want sofia to generate events and not route messages itself. Then I can listen to these perform whatever actions I need to. This may not work, and I'm open to implementing any other architectural changes you think would enable my use case. You're clearly the guy who knows what to do, and your advice is invaluable.
On Wed, Jul 6, 2011 at 5:23 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
you control the user names on your system the prefix+ string is just part of the username people would talk to.
for instance ext+ namespace is has auto presence built in so if you add ext+1000 to your list it will auto advertise that it's online.
conf+ goes to the conference.
conf+888@server.com will go to FS on server.com and route the chat messages to the mod_conference.
so basically you are proposing to try to modify sofia and break the other stuff because you do not like the prefix string on the user names but its designed to allow you to cross connect protocols, eg mod_sofia has sip+ registered and mod_dingaling has jingle+ so you can use jabber to pass sip+user@domain.com to your buddy list and have it report accurate presence.
Basically you make a new module called mod_foo and register the foo namespace. Then on your clients you subscribe to foo+1000@server.com for instance. Chat messages to that foo namespace will arrive in your code and you have the option to reply to them completely agnostic of the protocol sip, jabber etc.
You seem to be asking for advice but then ignoring it coming from the author of all of the above who spent many man hours solving this problem so it would be abstract. so I'm lost for what else to tell you.
Maybe we can confirm that you are simply taken aback by the idea of starting all your usernames with foo+ and simply propose to unravel everything in pursuit of removing it?
On Wed, Jul 6, 2011 at 6:14 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Nope, normal SIP MESSAGE events, no invites.
I just need an easy place where an app can look up some variables in the directory, check presence information, and start a call based on an incoming chat event. I also need a system that interops with existing SIP chat services. I don't think the +routing does these for me.
On Wed, Jul 6, 2011 at 8:46 AM, Anthony Minessale <anthony.minessale@gmail.com> wrote:
Are we talking about that ridiculous new chat concept in SIP where it uses INVITES and dialogs?
On Wed, Jul 6, 2011 at 12:56 AM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I think I understand it. Basically, a client can prepend a +code that causes the message to be routed to a specific module. I don't think that fulfills my requirements. This is fine for basic routing, but it's not a very good programmable environment for chat applications, unless I'm missing something, which is always possible.
If I am, can you direct me to anything that explains it in a little more depth than your email?
On Tue, Jul 5, 2011 at 10:49 PM, Anthony Minessale <anthony.minessale@gmail.com> wrote: > Read my response and my mod conference example again. > You can register a chat callback from any module bound to a particular > namespace....... > > On Jul 6, 2011 12:35 AM, "Michael Collins" <msc@freeswitch.org> wrote: >> On Tue, Jul 5, 2011 at 10:20 PM, Kurtis Heimerl >> <kheimerl@cs.berkeley.edu>wrote: >> >>> I don't think so. I set the ESL to log all events (/event all) from >>> the command line and received no events when sofia received SIMPLE >>> messages. Is that a bug? I had assumed it's intentional. >>> >> I'm 99% sure that those messages never make it up into FS from Sofia. I'd >> go >> look into the code but Sofia is really scary and there's no amount of >> Scooby >> Snacks you could give me to convince me to wander into that creepy old >> code. >> :) >> -MC > > _______________________________________________ > Join us at ClueCon 2011, Aug 9-11, Chicago > http://www.cluecon.com 877-7-4ACLUE > > FreeSWITCH-dev mailing list > FreeSWITCH-dev@lists.freeswitch.org > http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev > UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev > http://www.freeswitch.org > >
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
-- Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference sip:888@conference.freeswitch.org googletalk:conf+888@conference.freeswitch.org pstn:+19193869900
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
You can also write a module to load in FS that can listen to the same events, so programmatically may be able to handle them within FS there. -Steve 2011/7/6 João Mesquita <jmesquita@freeswitch.org>
I believe that these messages show up as events on ESL, don't they? Therefore you can do whatever from there...
Regards, João Mesquita
On Tue, Jul 5, 2011 at 11:31 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu>wrote:
I forgot to disable digest mode, and so I have 5 emails to respond to in 2 received mails. Instead, I'm going to address the highlights here:
Steven Ayre <steveayre@gmail.com> said: "Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works?
-Steve"
I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
"Abdul Hakeem" <alhakeem@gmail.com> said: "Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH"
So far as my current architectural vision, any module implementing a MESSAGE event should be able to trigger a dialplan action. My plan is to start with Sofia, so it would support SIMPLE. Others should be pretty easy as well.
Lastly, Anthony Minessale <anthony.minessale@gmail.com> said: "This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing.
we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat.
When a from user on chat contains +:
each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace.
Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc.
Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR.
I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality."
I need a programmatic layer for routing messages. What's currently in FS is (seemingly) unable to do this. I'm aware that the current system routes messages to users correctly; I don't think it enables any sort of interesting programmatic access. For instance, building a system that receives a message and immediately starts a call is not something I think can be currently done. The dialplan abstraction is well-understood by FS users, and an extension I think could provide a lot of value.
I don't think these changes will regress any functionality either. I proposed adding a configuration flag that switched between behaviors, so that existing functionality won't be modified. Lastly, sending this email was part of me trying to understand the current system. Thanks for the direction.
If I'm wrong, and there's a simple way to provide programmatic access, I'd love to hear about it. That's a lot less work for me!
On Sun, Jul 3, 2011 at 4:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
Basically, I expect my module to listen for message events and forward them to a dialplan (of any kind, likely using this API). Thanks for the direction! On Wed, Jul 6, 2011 at 1:29 AM, Steven Ayre <steveayre@gmail.com> wrote:
You can also write a module to load in FS that can listen to the same events, so programmatically may be able to handle them within FS there.
-Steve
2011/7/6 João Mesquita <jmesquita@freeswitch.org>
I believe that these messages show up as events on ESL, don't they? Therefore you can do whatever from there...
Regards, João Mesquita
On Tue, Jul 5, 2011 at 11:31 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I forgot to disable digest mode, and so I have 5 emails to respond to in 2 received mails. Instead, I'm going to address the highlights here:
Steven Ayre <steveayre@gmail.com> said: "Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works?
-Steve"
I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
"Abdul Hakeem" <alhakeem@gmail.com> said: "Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH"
So far as my current architectural vision, any module implementing a MESSAGE event should be able to trigger a dialplan action. My plan is to start with Sofia, so it would support SIMPLE. Others should be pretty easy as well.
Lastly, Anthony Minessale <anthony.minessale@gmail.com> said: "This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing.
we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat.
When a from user on chat contains +:
each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace.
Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc.
Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR.
I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality."
I need a programmatic layer for routing messages. What's currently in FS is (seemingly) unable to do this. I'm aware that the current system routes messages to users correctly; I don't think it enables any sort of interesting programmatic access. For instance, building a system that receives a message and immediately starts a call is not something I think can be currently done. The dialplan abstraction is well-understood by FS users, and an extension I think could provide a lot of value.
I don't think these changes will regress any functionality either. I proposed adding a configuration flag that switched between behaviors, so that existing functionality won't be modified. Lastly, sending this email was part of me trying to understand the current system. Thanks for the direction.
If I'm wrong, and there's a simple way to provide programmatic access, I'd love to hear about it. That's a lot less work for me!
On Sun, Jul 3, 2011 at 4:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
There's an interface so a module can register a dialplan handler. mod_dialplan_xml provides the one most commonly used. Endpoint modules like Sofia don't have a anything to do with the dialplan interface, that's the job of another module. Other modules that implement dialplan handlers include mod_dialplan_asterisk, mod_dialplan_directory, mod_yaml, mod_lua, mod_enum, mod_osp, mod_lcr. Most people just use the XML one though. The "XML" you often see in documentation for things like transfer actually is you specifying you want to use the mod_dialplan_xml one. The other modules use different dialplan names such as asterisk, directory, lua, lcr etc. -Steve On 6 July 2011 03:31, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I forgot to disable digest mode, and so I have 5 emails to respond to in 2 received mails. Instead, I'm going to address the highlights here:
Steven Ayre <steveayre@gmail.com> said: "Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works?
-Steve"
I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
"Abdul Hakeem" <alhakeem@gmail.com> said: "Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH"
So far as my current architectural vision, any module implementing a MESSAGE event should be able to trigger a dialplan action. My plan is to start with Sofia, so it would support SIMPLE. Others should be pretty easy as well.
Lastly, Anthony Minessale <anthony.minessale@gmail.com> said: "This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing.
we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat.
When a from user on chat contains +:
each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace.
Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc.
Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR.
I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality."
I need a programmatic layer for routing messages. What's currently in FS is (seemingly) unable to do this. I'm aware that the current system routes messages to users correctly; I don't think it enables any sort of interesting programmatic access. For instance, building a system that receives a message and immediately starts a call is not something I think can be currently done. The dialplan abstraction is well-understood by FS users, and an extension I think could provide a lot of value.
I don't think these changes will regress any functionality either. I proposed adding a configuration flag that switched between behaviors, so that existing functionality won't be modified. Lastly, sending this email was part of me trying to understand the current system. Thanks for the direction.
If I'm wrong, and there's a simple way to provide programmatic access, I'd love to hear about it. That's a lot less work for me!
On Sun, Jul 3, 2011 at 4:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
(grep for SWITCH_ADD_DIALPLAN if you're interested) On 6 July 2011 09:27, Steven Ayre <steveayre@gmail.com> wrote:
I don't quite understand what you're saying here. Individual modules
(e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
There's an interface so a module can register a dialplan handler. mod_dialplan_xml provides the one most commonly used. Endpoint modules like Sofia don't have a anything to do with the dialplan interface, that's the job of another module. Other modules that implement dialplan handlers include mod_dialplan_asterisk, mod_dialplan_directory, mod_yaml, mod_lua, mod_enum, mod_osp, mod_lcr. Most people just use the XML one though. The "XML" you often see in documentation for things like transfer actually is you specifying you want to use the mod_dialplan_xml one. The other modules use different dialplan names such as asterisk, directory, lua, lcr etc.
-Steve
On 6 July 2011 03:31, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
I forgot to disable digest mode, and so I have 5 emails to respond to in 2 received mails. Instead, I'm going to address the highlights here:
Steven Ayre <steveayre@gmail.com> said: "Have you thought of making it a patch to add a new API interface so that modules can register chat dialplans, similar to how mod_dialplan_xml works?
-Steve"
I don't quite understand what you're saying here. Individual modules (e.g., Sofia) would register a different dialplan? Is that how it currently works? I thought, if they selected an XML dialplan in the conf, they all used the same one. I'm obviously confused, so please explain in more depth!
"Abdul Hakeem" <alhakeem@gmail.com> said: "Kurtis, Which protocol will this chat/sms dialplan be compliant with ?. Sip MESSAGE method , SIMPLE and XMPP are both widely adopted. It would be great to add support for connectivity to external domains such as Gtalk, Yahoo Messenger etc. Cheers, AH"
So far as my current architectural vision, any module implementing a MESSAGE event should be able to trigger a dialplan action. My plan is to start with Sofia, so it would support SIMPLE. Others should be pretty easy as well.
Lastly, Anthony Minessale <anthony.minessale@gmail.com> said: "This sounds redundant and intrusive. We already have a concept of namespace within the chat username which is used for routing.
we prefix the namespace into the user id such as conf+1234@domain.com This allows conference to get messages from sip, xmpp or any other protocol that supports chat.
When a from user on chat contains +:
each module just parses the inbound chat message, cuts off the proto "everything up to the first +" in this case conf and routes it to the module registered to that namespace.
Right now conference will advertise it's presence and receive chat of the word list and respond with the list despite the protocol used, eg sip, jabber etc.
Also chat messages are routed to individual calls when they are associated with an active channel allowing you to use chat inside IVR.
I recommend trying to understand all of this before proposing drastic changes that will regress all of this functionality."
I need a programmatic layer for routing messages. What's currently in FS is (seemingly) unable to do this. I'm aware that the current system routes messages to users correctly; I don't think it enables any sort of interesting programmatic access. For instance, building a system that receives a message and immediately starts a call is not something I think can be currently done. The dialplan abstraction is well-understood by FS users, and an extension I think could provide a lot of value.
I don't think these changes will regress any functionality either. I proposed adding a configuration flag that switched between behaviors, so that existing functionality won't be modified. Lastly, sending this email was part of me trying to understand the current system. Thanks for the direction.
If I'm wrong, and there's a simple way to provide programmatic access, I'd love to hear about it. That's a lot less work for me!
On Sun, Jul 3, 2011 at 4:49 PM, Kurtis Heimerl <kheimerl@cs.berkeley.edu> wrote:
Hello Freeswitch-dev!
I've recently begin modifying Sofia to support a chat "dialplan", very similar to the voice dialplan. Basically, a chat/sms will come in at a certain number/address and be routed via the dialplan. My current plan for doing this is as follows:
1) Add message events to sofia: I want sofia (and eventually all chat clients) to send message events through FS's event framework when an event arrives. 2) Remove message routing from Sofia: Sofia should not be routing messages itself. Instead, it should just generate the event saying a message has arrived and someone else should do the routing (namely my dialplan) 3) Implement a simple chat dialplan module that listens for message events and routes them according to an XML dialplan.
I have some questions for the FS developer community.
First, building my own module is conceptually simple. Modifying Sofia is not. What's the best way to go about making these changes? I could submit extension tickets (e.g., a configuration variable that adds messages and one that removes routing), or submit patches, or both. I think this could be broadly useful, and I want to try to contribute to the community.
Secondly, I'm having a little difficulty finding the place where messages are routed in sofia. That's probably the place to insert both 1 & 2. Any pointers would be appreciated.
Thanks!
_______________________________________________ Join us at ClueCon 2011, Aug 9-11, Chicago http://www.cluecon.com 877-7-4ACLUE
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org
participants (8)
-
Abdul Hakeem
-
Anthony Minessale
-
François Delawarde
-
João Mesquita
-
Kristian Kielhofner
-
Kurtis Heimerl
-
Michael Collins
-
Steven Ayre