Freeswitch "real" response to api chat? - freeswitch

I'm sending an sms message like this over esl (telnet, java client, various methods all yield the same results)(numbers are all dummies):
api chat sip|13215555555#6.50.120.201|internal/2395555555#6.50.120.200|test message
This works fine with valid numbers. If we put in an invalid number somewhere we may see something like this in the sip trace indicating a problem:
U +0.745829 6.50.120.200:5060 -> 6.50.120.201:5060
SIP/2.0 484 Address Incomplete.
...
...however over the esl socket we get the same response event no matter what, just "sent". Also, when we bind to the esl port and attempt to spit out every message possible (no filters), we see most of what comes through a sip trace, but again not this bad result sip packet for some reason. It's like freeswitch is filtering out this specific packet from esl.
Is there a way over esl to probe raw sip messages so that we can test for such a packet manually, or some other way of seeking the final async result?
Thanks in advance!

Related

How to see/track the exact HTTP response (code and message) that an Eventgrid webhook endpoint receives?

I have a Webhook Eventgrid subscription. I do not have access to the webhook logs or implementation.
Apparently ,Eventgrid receives HTTP code other than success from the webhook, but I do not have any detail visibility to that.
How can I see the exact HTTP interaction (Response message, HTTP Code) for the EventGrid WebHook Bad Requests like the ones pointed below?
You need to configure the dead letter on your event grid subscription as documented here.
Once the events are not delivered and dead letter now you can review the lastDeliveryOutcome property on the dead letter events to know what was the reason the event was not delivered to the configured endpoint.
You cannot find the reason for each request at your end as the event may be delivered at a later point in time once it is retried.

ColdFusion API and Websockets

I am hoping someone can point me in the right direction. I have a CF2021 Server which uses a Node.js websocket server and CF pages (via javascript) as a client. Messages from user to user work as expected, so no issue there.
This CF Server also has a custom API built using CFML that handles and routes inbound SMS messages. My question is; what would be the best way to send the SMS message (by now its json) to the Node.js websocket to it can send it to the user(s).
I tried using the same javascript that the browser client uses, but it appears that the CFML API script is "browser-less", so that doesn't work, or should it?
I thought something like Apache Groovy may be the solution, but I am having difficulties with any websocket example I have found.
Any suggestions would be greatly appreciated.
thanks in advance
Flow matters.
If you want to handle an incoming message by delivering it to all currently logged in users who are subscribed to messages of the current sort: set up your message handler to deliver using lucee/adobe-coldfusion websockets. Be forewarned, Lucee takes some setup time, but once running, it is a great solution.
If you don't need immediate delivery, or you need a super simple solution: I actually have had some success with "Long Polling" you just have to remember to use "flush" early in the request, before any pause/sleep, then loop your message lookup requests for new data, with a 1-5 second delay between each loop. Once new data is found, I like to return the request to the client, close that polling request and start a new polling request using the client side. I typically won't poll for more than 60 seconds. Even if the returned json object is empty.

Alternatives of MQJExplorer tool for capturing request and sending response

I have an application which uses IBM MQ to send out the request in a queue manager to a particular system B.
The response corresponding to that request is then received back from system B by the application in a sync call and then further business processing happens.
Since we are working on the offshore region, we do not actually send out the request to system B but rather capture it ourselves using the MQJExplorer tool and send back the response, which kind of simulates the prod. behaviour.
The problem here is, or i would say, the overhead is that we have to manually open the mqjexplorer tool, check the request, take a particular attribute from the request(lets say ID), and send back ID+1 so that the application recognizes the response is for ID-1 request.
I would like to know if this particular thing can be automated, with some other tool, where i can define like whenever any such kind of request is received in for eg: MQ001 queue manager and its REQ queue, just extract the ID attribute, do a ID+1 and send back the response in RESP queue of same qm.
There are a pair of IBM supplied samples that come with IBM MQ:-
amqsreq0.c - Sample C program that puts request messages to a message queue and shows the replies (example using REPLY queue)
amqsecha.c - Sample C program - echo messages to reply to queue
They are supplied to allow you to try out a request/reply application.
You already have the equivalent app to do the job that amqsreq0.c does, and you could adapt amqsecha.c to extract your ID attribute, increment it, and then the sample already has the code to send the reply back.
It can be automated by running as a triggered application too.
If 'C' language is not your thing and prefer Java then have a read of a blog posting I did in 2017. It is a complete request/reply scenario with 2 applications: BEServer01.java and RQClient01.java
You can modify BEServer01.java to your liking (and remove the SQL code). BEServer01.java contains all of the code for getting a request message and sending a reply message. Simply replace the variable 'replyText' contents with the reply message that you want.
If you are not a programmer then there is another option but it does not modify the message contents. MQ Visual Edit has a component called: SIM Server. Its purpose is to simulate a server-side component. You configure what 'request' queue to get the messages from and what the reply message text will be. When a messages lands on the request queue, the SIM Server will retrieve it and send the reply message to the queue & queue manager specified in the MQMD's ReplyToQueueName and ReplyToQueueManagerName fields.

What is the purpose of HandlerExtensions.ConnectHandle ConnectHandler<T>() method?

Xmldoc states:
Adds a message handler to the service bus for handling a specific type
of message
But it does not require endpoint name. How then does it work? I tried this method, but nothing happened.
Is there any possibility to add handlers dynamically, while bus is running?
By connecting a handler to the bus after it has been started, messages can be sent to the bus's address directly. This is particularly useful for things like responses to requests, which should not be published and are sent immediately back to the endpoint.
When using bus.ConnectHandler(context => {...}) to add a handler to the bus dynamically, no subscriptions or exchange bindings are created on the broker. It's only possible to receive messages which are directly sent to the endpoint.
When a message is sent from the bus, such as a request, the SourceAddress is added to the message header. If a request is sent, the ResponseAddress is also set. A fault address can also be specified if you want to use a non-dynamic endpoint to capture faults (such as a failed command that is not awaited, IE, fire and forget) so that faults can be triaged and handled appropriately by another persistent endpoint.

Visualize HTTPS in WireShark

I am trying to do a http bot to make me, my online check in.
I used the wireshark application to store the http request and response while i was
make the check in.But when i try to visualize what was sent in the request/response i am not able to to see the https packets.
For example : If i use the firebug plugin (firefox) i am able to see this information:
This first link shows the headers(request/response)
https://docs.google.com/leaf?id=0B9WcB03Ho2uzZmNlNTUyMDYtZjRhZC00YjljLTlkMDAtMDBiMmU4MDAzYjlk&hl=en_US
This second list shows the paylod of the POST method
https://docs.google.com/leaf?id=0B9WcB03Ho2uzNjllYjllYTQtZTg2MS00Zjc1LTgyODQtNTUyNTc5YTk5N2Nh&hl=en_US
But in whireShark when i filter for example by the ip.dst_host , the only packets that appear are the TCP and TLSv1 and in each one i am not able to see the some information thar i am able to see in the firebug because that information is in the application layer(HTTP).
The URL : https://checkin.si.amadeus.net/1ASIHSSCWEBTP/sscwtp/checkindirect
HTTPS is explicitly designed to prevent you from seeing this traffic. If you have the server's private key, you can input it into WireShark to decrypt the packets. Otherwise, use Fiddler.

Resources