'USSD query issues
i am trying to make a simple ussd query to check balance and i have been struggling for hours. My brain hurts. this is my code
let serialportgsm = require('serialport-gsm')
const ussd = require('./node_modules/serialport-gsm/lib/functions/ussd.js');
let modem = serialportgsm.Modem();
ussd(modem);
let options = {
baudRate: 115200,
dataBits: 8,
stopBits: 1,
parity: 'none',
rtscts: false,
xon: false,
xoff: false,
xany: false,
autoDeleteOnReceive: true,
enableConcatenation: true,
incomingCallIndication: true,
incomingSMSIndication: true,
pin: '',
customInitCommand: '',
cnmiCommand: 'AT+CNMI=2,1,0,2,1',
logger: console
}
modem.open('/dev/ttyUSB0', options);
modem.on('open', () => {
console.log(`Modem Sucessfully Opened`);
modem.initializeModem(() => {
modem.on('onNewIncomingUSSD', (data) => {
console.log('onNewIncomingUSSD', {
data
});
})
async function main() {
await modem.setModemMode(msg => {console.log('set pdu msg:', msg)}, 'PDU');
let command = '*124#';
try {
let r = await modem.sendUSSD(command);
console.log(r);
} catch (err) {
console.error(err);
// handle the error here
}
}
main();
});
})
after running it,this is the output i get
Modem Sucessfully Opened
Modem Write: ATZ
Modem Received: ATZ
Activate Message Processing for: ATZ
Modem Received:
Modem Received: OK
Call callback for: ATZ
Modem Write: ATE1
Modem Received: ATE1
Activate Message Processing for: ATE1
Modem Received:
Modem Received: OK
Call callback for: ATE1
Modem Write: AT+CPIN?
Modem Received: AT+CPIN?
Activate Message Processing for: AT+CPIN?
Modem Received:
Modem Received: +CPIN: READY
Call callback for: AT+CPIN?
Modem Received:
Modem Received: OK
Modem Write: AT+CMEE=1;+CREG=2
Modem Received: AT+CMEE=1;+CREG=2
Activate Message Processing for: AT+CMEE=1;+CREG=2
Modem Received:
Modem Received: OK
Call callback for: AT+CMEE=1;+CREG=2
Modem Write: AT+CLIP=1
Modem Received: AT+CLIP=1
Activate Message Processing for: AT+CLIP=1
Modem Received:
Modem Received: OK
Call callback for: AT+CLIP=1
Modem Write: AT+CMGF=0
Modem Received: AT+CMGF=0
Activate Message Processing for: AT+CMGF=0
Modem Received:
Modem Received: OK
Call callback for: AT+CMGF=0
Modem Write: AT+CUSD=1,"*124#",15
set pdu msg: { status: 'success', request: 'modemMode', data: 'PDU_Mode' }
Modem Received: AT+CUSD=1,"*124#",15
Activate Message Processing for: AT+CUSD=1,"*124#",15
Modem Received:
Modem Received: +CME ERROR: 100
Then i tried changing the command to 7-bit gsm
*124# --> 2A31323423
and i get this output
Modem Sucessfully Opened
Modem Write: ATZ
Modem Received: ATZ
Activate Message Processing for: ATZ
Modem Received:
Modem Received: OK
Call callback for: ATZ
Modem Write: ATE1
Modem Received: ATE1
Activate Message Processing for: ATE1
Modem Received:
Modem Received: OK
Call callback for: ATE1
Modem Write: AT+CPIN?
Modem Received: AT+CPIN?
Activate Message Processing for: AT+CPIN?
Modem Received:
Modem Received: +CPIN: READY
Call callback for: AT+CPIN?
Modem Received:
Modem Received: OK
Modem Write: AT+CMEE=1;+CREG=2
Modem Received: AT+CMEE=1;+CREG=2
Activate Message Processing for: AT+CMEE=1;+CREG=2
Modem Received:
Modem Received: OK
Call callback for: AT+CMEE=1;+CREG=2
Modem Write: AT+CLIP=1
Modem Received: AT+CLIP=1
Activate Message Processing for: AT+CLIP=1
Modem Received:
Modem Received: OK
Call callback for: AT+CLIP=1
Modem Write: AT+CMGF=0
Modem Received: AT+CMGF=0
Activate Message Processing for: AT+CMGF=0
Modem Received:
Modem Received: OK
Call callback for: AT+CMGF=0
Modem Write: AT+CUSD=1,"2A31323423",15
set pdu msg: { status: 'success', request: 'modemMode', data: 'PDU_Mode' }
Modem Received: AT+CUSD=1,"2A31323423",15
Activate Message Processing for: AT+CUSD=1,"2A31323423",15
Modem Received:
Modem Received: OK
Call callback for: AT+CUSD=1,"2A31323423",15
Modem Write: AT+CNMI=2,1,0,2,1
{ status: 'success', request: 'ussd', data: 'OK' }
Modem Received: AT+CNMI=2,1,0,2,1
Activate Message Processing for: AT+CNMI=2,1,0,2,1
Modem Received:
Modem Received: OK
Call callback for: AT+CNMI=2,1,0,2,1
Modem Received:
Modem Received: +CUSD: 2
onNewIncomingUSSD {
data: {
status: 'Incoming USSD',
data: {
text: undefined,
follow: 'terminated by network',
followCode: '2'
}
}
}
'terminated by network'. I am not getting the balance message. I tried *124# on my mobile device too and it's a valid USSD. is there anything i am doing wrong? Please help
EDIT i am using this library btw : https://github.com/zabsalahid/serialport-gsm
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
