Restcomm Connect USSD connected to OpenBTS over SIP - voip

I am trying to connect USSD connections OpenBTS to Restcomm-Connect over SIP. It seems like this should be possible but I keep running into issues. Hopefully someone has done this before and can be of help.
What I've Done So Far
OpenBTS is running and a phone can connect to the radio
Restcomm Connect is running and I have created a USSD application
to configured for *100# pointing to it.
SIP.USSD.Proxy is pointing to the Restcomm SIP port
What Happens When USSD Codes Are Dialed
A SIP INVITE goes to the Restcomm server. That looks like this
INVITE sip:*100#;phone-context=irrelevant.net;user=dialstring#xxx.xx.x.xx:5080 SIP/2.0
<?xml version="1.0" encoding="UTF-8"?>
<ussd-data>
<language>en</language>
<ussd-string>%s</ussd-string>
</ussd-data>
The Restcomm server then sends back a 400 Bad request.
A notification is left in the Restcomm logs.
Restcomm cannot process this call because the destination number *100#;phone-context=irrelevant.net;user=dialstringcannot be found or there is application attached to that
We have recompiled OpenBTS removing the line that adds the ;phone-context=irrelevant.net;user=dialstring string source. Thinking that it could be confusing Restcomm. Still no luck.
One theory is that the OpenBTS SIP client needs to authenticate with Restcomm.
Requirements
I am not beholden to Restcomm and would be fine with any OpenBTS -> SIP -> HTTP gateway.
What is the reference implementation for OpenBTS USSD SIP?

Related

GraphQL subscription does not receive messages after successful handshake

I have created a simple GraphQL Subscription using Nest.js/Apollo GraphQL over Node.js. My client application which is a react.js/apollo client works find with the server. The client subscibes to the server via GraphQL similar to:
subscription
{
studentAdded
{
id
}
}
My problem is that it works only locally. When I deploy my server back-end to a hosted docker over internet, client won't receive data anymore.
I have traced the client, it sends GET request on ws://api.example.com:8010/graphql and receives the successful HTTP/1.1 101 Switching Protocols response. However, nothing is received from server like when the server was on my local machine. Checking the remote server log showed me that the client successfully connects to server. There, I can see onConnect log messages.
Now I need any guidance to solve the problem.
I check several things myself. Firstly, I thought WebSocket address is prohibited in the network but then realized that it is on same port as normal HTTP. Secondly, supposed that WebSocket messages/frames are transmitted over UDP but I was not correct, it is over TCP and no need to worry about network settings.
Additionally I have read several github threads and StackOverflow questions. But did not find any clue. I am not directly using Node.js/WebSocket, instead, I am using Nest.js/GraphqQL subscription. It has made my search tougher.
Your help is highly appreciated.

MQTT How to send back to client in IoT?

I am new beginner and try to create IoT network.
As I search on the Internet and see some information,
there is a device (MQTT client), and broker (MQTT server).
I have use node.js (masca) to setup a web server with static IP as "broker".
I have a TinkerBoard as "device", and it run bash command as publisher.
But I meet a problem and very confuse about the architecture... all the sample code I found are one-way communication.
The broker does not send anything back to device.
Is that necessary I have to create both publisher and subscriber program in the device to allow user send command through the broker to control the device?
Yes if you want to receive messages on your device as well as publish them then it will have be both a subscriber and publisher.
It is perfectly normal for a single client to do both.

ssmtp: queuing emails when smtp server is unreachable

I have ssmtp installed and configured on my linux box. It connects to a remote smtp server provided by my hosting provider and works faultlessly.
My linux box is connected to an APC UPS, and emails are sent from the ups deamon (apcupsd) when the machine looses comms with the UPS, or the battery in the UPS becomes faulty.
apcupsd also sends out "onbattery" or "onmains" emails. The problem is however that the linux box is the only thing on the UPS, things like my router and hub are NOT on the UPS, and so switch off in the event of a power outage.
Is there anyway to have the emails queued up when the linux box is unable to connect to the smtp server, and then deliver them when everything comes online?
if I try "mailq" during a power outage, it states that the queue is empty, even tho I know that an email was generated and failed to be delivered.
Thanks in advance,
Phil.

Creating an SMS server on the PC

I am trying to create an application that would act as an SMS server between multiple virtual instances of Java ME.
I have searched online and have not found anything that dealt with this issue.
This is not to be confused with the link attached that was discussed on stack overflow before.
J2ME SMS Server on mobile phone
I am hoping to create the SMS Server to act as a tester for an actual SMS gateway in a production environment.
Any help will be appreciated
It is definitely possible with j2me
for testing you have to create two application.
In which one application will send sms to a phone no on predefine port and
the receiver application will listen on that port for incoming sms
go through this sample code it will help you.

J2ME SMS Server on mobile phone

Is it possible to have a j2me app on a mobile to act as a "SMS gateway" that will handle incommming messages, do a query on a database via GPRS and reply the user back?
This is entirely possible on any J2ME handset that supports JSR 120 (i.e.: most of them). However as Wonil said, you can't just process ANY incoming SMS message. It has to be an SMS sent to a port number on which your app is listening (using a server connection as Wonil explained).
It wouldn't be automatic unless the app was signed (as confirmation is generally required for sending SMS and network access).
Another approach is to tether your phone to a PC using a USB cable/bluetooth/IR, open a serial connection using the phone as a modem, and write a program to listen for new SMSs using AT+CGML as described here. This would allow ANY incoming SMS to be processed (no port number required), and without any annoying confirmation prompts.
HTH
I think you should check about JSR-120 documentation to confirm.
But, in my thought it might be impossible. If you want to receive message by using JSR-120, you should assign specific end point(port number) to listen as like below:
serverConn = (MessageConnection)Connector.open("sms://:5000");
So, you can't catch all SMS messages. It can't be a gateway then.
It probably depends if your phone supports it. Have a look at the J2ME Wireless Messaging API:
The Wireless Messaging API (WMA) is an optional package for the Java 2
Platform, Mobile Edition (J2ME) that
provides platform-independent access
to wireless communication resources
like Short Message Service (SMS).
http://java.sun.com/products/wma/overview.html
This article has some examples which can probably serve as a starting point for what you want to achieve: http://www.ibm.com/developerworks/wireless/library/wi-extendj2me/
Edit: as others have pointed out, you might not be able to receive all messages.

Resources