I am new to Freeswitch.
I have successfully connected two FSs. First FS redirects to second FS.
Now I would like to get the information about the SIP invite; whether it is received at 2nd FS or not programmatically, when call is made to 1st FS. I am open to scripting option as well apart from configuring the xml files.
You can write script which will listen for channel states on ESL interface of second Freeswitch, when call will hit extension of it you should get CHANNEL_CREATE event:
https://wiki.freeswitch.org/wiki/Event_List#Channel_events
More about ESL:
https://freeswitch.org/confluence/display/FREESWITCH/mod_event_socket
Related
Is there anyway that I can add a custom message when user says ‘Cancel’ or ‘Exit’ to end the conversation?
I have added intent for these utterances and connected it with my webhook but the message I send back in app.ask() is not displayed or read.
This is currently a known issue and you cannot override these words currently. You can handle handle other words like "quit", "finish", "exit", etc.
Done using API.AI. (see the picture)
http://i.imgur.com/WDQWmwb.png
As per this specification
Conversation Exit google assistant
probably you will only able to do an app.tell() in your webhoook because this must be a final Intent (you can tell something to user but not ask and waiting for a response), see point five of suggested configuration:
Enable Set this intent as end of conversation
In every case if you use a weebhhok take care: The maximum execution time allowed for conversation exit requests is 2 seconds
I have to achieve below functionality using twilio recording and gathering API. I am struggling to achieve the exact goal can any one please help.
Steps :
1 - Agent will be on an existing call with customer.
2 - Agent dial twilio number for recording twilio should ask verification code.
3 - Agent will merge the existing call with twilio call.
4 - Agent will enter verification code.
5 - Twilio should accept call if verification code is valid and start recording existing merge call.
6 - Agent will stop call as soon as agent stops/disconnects call recording will be received by callback from twilio.
I am trying to initiate call using twilio call forward with security code when there is ongoing call between two cells.. e.g. I am dialing +91976693XXXX from my cell +91866835XXXX and we both on call.. Then we are dialing the twilio number "+1 813-501-XXXX " added webhook which returning the response Twiml :
<Response>
<Gather action='http://example.com/Modules/DisputeSuite/Customers/ValidatePin.aspx' numDigits='4'>
<Say>Please enter valid pin.</Say>
</Gather>
</Response> on Action page if pin is correct i am sending response Twiml to initiate call : <Response>
<Dial record='record-from-ringing-dual' recordingStatusCallback='http://example.com/Modules/DisputeSuite/Customers/ConferenceResponce.aspx'><Number>+91976693XXXX</Number></Dial>
</Response>
All is working fine if i enter pin and then merge the call. But if i merge call first and then trying to enter pin then is not forwarding pin to action page. Please help to resolve the issue. Thank you
we tried to track email opens with google analytics and measurement protocol. We exactly followed instructions given in http://www.lunametrics.com/blog/2013/06/17/email-tracking-google-analytics/ and http://dyn.com/blog/tracking-email-opens-via-google-analytics/
The problem is that every email open is counted also as a session which is not correct. Can you give me any advice how we can track opens without recording sessions? Thank you
Every hit in GA always starts a session, so this is not possible. If you don't want it to appear in your normal profile, try setting a pageview with prefix so you can filter them out into a seperate View.
e.g.
/virtual/email-open
Then set up your filters.
Session begins with any interaction. Don't be sad, it is correct.
You can extend your data with some identifier like virtualpagname or whatever and than make segment or filter.
dp=mypage.com
dh=/emailing
dt=Email Gate
You can either use datasource parameter:
ds=email
https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#dataSource
I'm new to Fiddler and have run across something that seems strange to me. If I select an entry and then click Replay, I get different behavior from when I drag an entry into the Composer window and click Execute.
Should the different behavior between these two methods of re-making a request be different?
Note: I called the second method "cloning" a request because the Composer window says "You can clone a prior request by dragging and dropping a session from the Web Sessions list)."
What is the "different behavior" specifically?
The two operations you describe should behave the same way unless the server returns a redirect or an authentication challenge, in which case preferences will control whether Fiddler automatically authenticates and/or follows the redirect.
Please feel free to email me (Help > Send Feedback) details and/or screenshots of the difference you see.
I want to post some data to the server, and in response, I want to create a CSV file, with application/excel as the MIME Type (recently recognized as Internet Media Type), to force the browser to open the generated CSV file in Microsoft Excel. However, I also want to prevent user from re-submitting the same info (re-posting the form) by any accident as the result of refreshing the page.
With simple CRUD operations, I use Post/Redirect/Get pattern, so that any further refreshing will only send HTTP Get Request to the server, without any parameter, thus not changing server's state (Idempotence).
What is the recognized pattern for stopping user from re-submitting (re-posting) the same info to the server, when the response is not a page, but a file?
Any idea?
The Post/Redirect/Get pattern is an answer to a browsing event.
Here, there is no browsing action (the form submission only open a 3rd party app, i.e excel), and so any kind of browsing related pattern will be useless.
I suggest you use both a server side trace of the initial submission (with a unique token maybe), so you can prevent the file generation, and an easy to write client side script like <form onsubmit="this.onsubmit = function(){ return false ; }">
I can offer you one other solution.
Take hash (MD5/SHA256 ..) of your submitted data. The hash will be [fairly] unique.
Put it in list in a session with a time limit, say 5 minutes.
Even your user submit same data. Hash will be same and you can give error message to your user.
If different users can post same data, you can also hold user information in the list. And give error message according to user.