GotSpeech.NET

The online community for Microsoft Speech Server developers
Welcome to GotSpeech.NET Sign in | Join | Help
in Search
Gold Systems

Where do I start?

Last post 04-28-2010, 11:27 AM by ml_. 27 replies.
Page 1 of 2 (28 items)   1 2 Next >
Sort Posts: Previous Next
  •  01-19-2010, 2:41 PM 9958

    Where do I start?

    I've been put in charge of creating an application that queries a database table for completed tickets and then initiates a call to the party that created the ticket.  I've been researching OCS and Speech Server the last couple of days, and I must admit, I'm a little overwhelmed.  Is it possible to do this in one application, preferably running as a service, or do I need to create one application as a service that creates messages in a message queue, which then triggers a second application that is web-based that initiates the call?  We want to use some type of VoiP solution to place the calls(that's probably a whole other post in the forums).  If we do message queuing, is it just a matter of setting up a SIP peer in the Admin Console?

     We're in a time crunch situation here, so I don't have the luxury of being able to go down wrong paths a few times before figuring it out, so any info would be greatly appreciated.

  •  01-19-2010, 9:21 PM 9961 in reply to 9958

    Re: Where do I start?

    Well if you are completely new to Speech Server I suggest you spend an hour or two here - http://gotspeech.net/eLearning/ as that will give you a good foundation.

    You have the basic concepts right. Something ques up calls then the outbound Speech Server app will make the call. However you have to plan for what happens if the call doesn't succeed - ring no answer or busy etc. What are yo going to do about re-queueing the call? What denotes a successful call?

    You could create a service that queries the database and ques the call. You could use SQL Notification Services to get the process rolling. It can b two apps or multiple apps.

    To be honest there is a lot involved with an app like you describe and it isn't the ideal place to start lesrnig how to program Speech Server.

    If you want to call me I would be more than happy to discuss this with you.


    Marshall Harrison
    MVP, Office Communications Server
    GotSpeech Consulting LLC
    Phone: (904) 222-8880
    the gotspeech guy
  •  01-20-2010, 1:13 PM 9965 in reply to 9961

    Re: Where do I start?

    I had actually started developing an app back in May of '07.  At the time, I was using SS '04 because the '07 private beta was full.  That project ended up getting scrapped because the customer we were developing it for ended up going with Dialogic site-wide and we had to create an app that used it instead.  Since it's been 2 1/2 years since I last attempted to use SS, I know I'll have some relearning to do and I wanted to see if the basic concept was the same or if there are better ways to do things now with an updated toolset.  Back when I was trying to develop the first app, I was lucky enough to have Michael Dunn as a resource as he worked at the same company as a couple of friends of mine.  It appears he is now employed by Microsoft.  I've tried contacting him by email and through his MSDN blog, but haven't heard anything back, so that is why I turned to the forums.

    I think for the most part, I can get to the point of where I have a service that queues a message and then have the queue call the outbound calling web app, but like you say in your reply, I may have some difficulties obtaining the statuses of my queued messages.  Basically we would consider anything where an actual person picked up or a message was left on an answering machine as being successful.  We also want to make the calls using VoiP.  I see in the SS Admin Console, you can set up a SIP Peer, which I'm assuming is what I would need to do.  We would need to select a provider for this(if you have any suggestions, please let me know) and then would it just be a matter of plugging their information into the SIP Peer?

     Maybe once I get the bear neccessities of the two apps done, I will give you a call if I get stuck on anything.  Until then, if there are any tips or suggestions you can think of, I would be very grateful for them.

    Thanks!

  •  01-20-2010, 1:47 PM 9966 in reply to 9965

    Re: Where do I start?

    Speech Server 2007 is way different than MSS 2005. It's a whole different thing when working with the managed code approach.

    I suggest again that you look at the eLearning modfules before you get started.

    If you get stuck or have questions then call me. If you need someone to develop the app for you call me for that also.


    Marshall Harrison
    MVP, Office Communications Server
    GotSpeech Consulting LLC
    Phone: (904) 222-8880
    the gotspeech guy
  •  01-20-2010, 2:42 PM 9969 in reply to 9965

    Re: Where do I start?

    A few questions:

    • Who are you calling? Customers? Internal extentions?
    • Does it have to deliver to voicemail?
    • Why kind of infrastucture do you have? PBX? Sip trunks?
    • What is the content of the message? Are you going to have to be doing database lookups in the middle of the call or is the message to be delivered known before the call begins?

    Shamless plug - I've built an engine that handles outbound messaging via voice, sms and email. Its a WCF based web service so it can be plugged into just about any application. It doesn't fit every situation but if you want to skip dealing with all the telephony and just get messages out it takes about 10 minutes to integrate it. Check out www.notiva.com.

    If you're really excited about building it youself (face it, telephony and speech can be a fun toy to play with), then start posting your questions. Lots of us here willing to help out.


     

    Marc LaFleur
    MVP - Communications Server

      
    Blog:Speaking from the Edge
    Web:My Website

  •  01-21-2010, 2:15 PM 9977 in reply to 9969

    Re: Where do I start?

    To answer your questions:

    • We build software for the utility locating community.  You've probably seen "Call before you dig".  Our customers use our software to receive tickets from those call centers and then they can dispatch them out to mobile locators and the locators can then complete the ticket.  Certain states require a "positive" response back to the person that initiated the ticket telling them that it has been completed via voice or email.  So that is what this application would be doing.
    • It will just be a phone call.
    • Right now, we don't have anything and are willing to take suggestions for selecting a company to provide us with SIP/VoiP service.  I think this might be our biggest "unknown" right now.
    • The route I'm planning on going right now is to have a background service app that will query our database looking for tickets that need to have a response sent out and to send them to a message queue which will trigger Speech Server web app.  The queued message will contain info such as phone number to call and a ticket number to be passed as url parameters.  The web app will then be doing database lookups while the call is in process.  Is this not a good idea?  Is there a way to place the text inside the queued message?

    Your web service does look intriguing, but we want to have full control over the entire process.  The whole reason that we started looking at developing this in-house was because the service we are using right now, group2call.com, is hit or miss when it comes to their service being up, which is unacceptable.  Now that I've had a few days to really start digging into Speech Server, I've shown my project manager some of it's capabilities and we've already begun thinking about other applications that we could use it for.

  •  01-21-2010, 4:17 PM 9978 in reply to 9977

    Re: Where do I start?

    Yes, you can specify the content of the message when you put in the queue.
    --
    How To Ask a Question: http://support.microsoft.com/kb/555375
    --
    This posting is provided "AS IS" with no warranties, and confers no rights.
    Use of included script samples are subject to the terms specified at
    http://www.microsoft.com/info/cpyright.htm
  •  01-21-2010, 4:21 PM 9979 in reply to 9977

    Re: Where do I start?

    Is the message to be played essentially the same for each call?

    What is the purpose of the database look up during the call?

    Perhaps a better approach would be to have the app just log the status of the call to another queue and have teh Windows service Or another service monitor that queue for rescheduling calls or update call status in the database.

    Are you the only developer? If not are you interested in some off site training?


    Marshall Harrison
    MVP, Office Communications Server
    GotSpeech Consulting LLC
    Phone: (904) 222-8880
    the gotspeech guy
  •  01-21-2010, 4:58 PM 9980 in reply to 9979

    Re: Where do I start?

    The message will be based on a template with certain pieces of it being dynamic based on a query.  My understanding is that I need to store the information needed to perform those queries as URL parameters in my message queue body to pass on to the Speech Server web application.  The web app would then extract this information using QueryString and then query the database to get the actual text of the outbound call.  The following code snippet shows what I'm trying to do while queuing the message.

    buf.Append("OutboundPhoneNumber=").Append(dtr.GetString(2));

    buf.Append("&CustomerID=").Append(dtr.GetString(0));

    buf.Append("&JobID=").Append(dtr.GetString(1));

    msg.Body = buf.ToString();

    msg.Priority = MessagePriority.Normal;

    msg.Label = "Queue " + dtr.GetString(1).Trim() + " for phone number " + dtr.GetString(2);

    queue.Send(msg);

    If there's a better way to do this, I'm completely open to suggestions.  Along with being pretty new to Speech Server, I'm also new to message queues.  Therefore, your suggestion of using a second queue to to keep track of statuses makes me a little nervous.

    Speaking of message queues, is there a way to set the max amount of times to attempt to send the message to my web app and also set a delay time between retries if the call failed for any reason(no answer, busy, etc.) when I create the message?

     I am the only developer working on this particular application.

  •  01-21-2010, 7:03 PM 9981 in reply to 9980

    Re: Where do I start?

    bdk0172:

    Speaking of message queues, is there a way to set the max amount of times to attempt to send the message to my web app and also set a delay time between retries if the call failed for any reason(no answer, busy, etc.) when I create the message?

     I am the only developer working on this particular application.

    You are basically on the right track.

    One way to  handle the retries and delay is to keep time stamps on the database along with a call status. Your service would query at specific intervals for all records that meet your criteria. The query should select records that haven't been dialed along with those that were busy or ring no answer and it has been x number of minutes since the last try.

    For example if the last try was busy you may want to wait 5 minutes before calling again. Those people are probably home (got busy signal) but you need to give them time to finish their current call.

    If the last try for a record was ring no answer then you probably want to wait a little longer before trying again as the assumption is that they aren't home so you need to give them some time to get home.

    Dialing either call too soon will likely result in the same results. You need to figure out what time frames work best for you.

    Too short of a time frame and you waste time making too many calls. You may also want to set a max tries amount and stop making calls when that is reached but it really depends on what you are trying to accomplish.

    The part about doing database look ups during a call is that it adds latency. When the remote party answers a prompt they expect the next prompt withing about 2 seconds or less. Users don't want long delays between prompts.

    You should also avoid doing database look ups in the turn starting event of a QuestionAnswerActivity as that gets fired for every silence or no reco. Do it once in a code block before you get to the QA.

     


    Marshall Harrison
    MVP, Office Communications Server
    GotSpeech Consulting LLC
    Phone: (904) 222-8880
    the gotspeech guy
  •  01-22-2010, 9:45 AM 9985 in reply to 9981

    Re: Where do I start?

    Yeah, I was thinking I would have to do some sort of database flag for retries.  We already have a status field, but may need to add fields for number of retries and delay time before retrying.

    I think I should be good with database lookups.  Hopefully I only need to do it once per call in a code event before actually making the call.

    Do the messages in the message queue get deleted right away or is there some behind-the-scenes logic that might keep them in the queue if the call is unsuccessful?  I've been doing some research and I've seen some things about poisoned messages that got me thinking maybe they don't get removed under certain circumstances.

  •  01-22-2010, 10:50 AM 9987 in reply to 9985

    Re: Where do I start?

    Not sure what poisoned messages you are referring to.

    Speech Server removes each one as starts the app/call. If it didn't you couldn't point two MSS boxes at the same queue for load balancing.


    Marshall Harrison
    MVP, Office Communications Server
    GotSpeech Consulting LLC
    Phone: (904) 222-8880
    the gotspeech guy
  •  02-02-2010, 3:03 PM 10009 in reply to 9987

    Re: Where do I start?

    Is it possible yet to develop a Speech Server 2007 app yet in Visual Studio 2008?  We would like to develop both apps(app to queue messages and Speech Server app) in the same environment, 2008 being the preference.  I saw your blog on UCMA 2.0 Server Speech SDK being compatible with 2008, but I'm not sure if it would be a step in the right direction or if I should continue down the Speech Server SDK path.

    Any suggestions?

  •  02-03-2010, 7:25 AM 10011 in reply to 10009

    Re: Where do I start?

    You can not develop Speech Server apps in VS2008.

    You can develop IVR apps using UCMA 2.0 but most of the tools aren't there yet. The recommended approach is to stay with Speech Server for the time being.

    See this fro more info - http://gotspeech.net/blogs/marshallharrison/archive/2009/12/24/what-s-the-story-on-speech-server-s-future.aspx 

     


    Marshall Harrison
    MVP, Office Communications Server
    GotSpeech Consulting LLC
    Phone: (904) 222-8880
    the gotspeech guy
  •  02-04-2010, 9:36 AM 10014 in reply to 10011

    Re: Where do I start?

    Marshall, I'm having an issue attempting to use the detectansweringmachine.  I followed the "Detect Answering Machine" sample from the Speech Server help, but I'm getting this error when attempting to run the app:

     Error 1 Could not create activity of type 'SpeechNotify.Workflow1'. System.UriFormatException: Invalid URI: The format of the URI could not be determined.
       at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
       at System.Uri..ctor(String uriString)
       at SpeechNotify.Workflow1..ctor() E:\Dev\SpeechServer\SpeechNotify 1 1 

    Here is where I got the Responses.grxml from:  ms-help://MS.SpeechServer.1033/SpeechServer_AppDevGuide/html/46b6213e-3edd-4d0c-b284-d078af05cd68.htm

    And here is the rest of the code that I'm trying to run:  ms-help://MS.SpeechServer.1033/SpeechServer_AppDevGuide/html/9a8f1e55-6487-46da-97fa-f6f7e9bfd748.htm

Page 1 of 2 (28 items)   1 2 Next >
View as RSS news feed in XML