Forums | developer.brewmp.com Forums | developer.brewmp.com

Developer

Forums

Forums:

Hi,

I want to write an app that acts as an SMS inbox. I did this in 2.x but with 1 serious problem - I can't get the sender's phone number! I was hoping ISMS in 3.x would make the difference but can't understand the API documentation for using it.

Here's what I did in 2.x for receiving an SMS:
1) I added AEECLSID_TAPI (mask NMASK_TAPI_SMS_TS) to the .mif file to register for SMS notifications
2) I handled EVT_NOTIFY in my app and parsed the AEESMSMsg structure that was passed in ->pData

case EVT_NOTIFY:
AEENotify* aee = (AEENotify*)dwParam;
AEESMSMsg* smsMsg = (AEESMSMsg*)aee->pData

The 3.x documentation mentions how the SMS message ID is passed in the ->pData field of AEENotify. But, what do I do differently to get the message ID? There's very little in the API about this.

Can someone post an example of receiving an SMS using ISMS_ReceiveMsg()?

thanks,
joe

An example:
case EVT_NOTIFY:
{
AEENotify* temp = (AEENotify*)dwParam;
// Receive Message
if(AEECLSID_SMSNOTIFIER == temp->cls &&
(((AEESMS_TYPE_PAGE<<16) | NMASK_SMS_TYPE) ==
temp->dwMask)) {
ReceiveSMSMessage(pMe, (uint32)temp->pData);
}
return TRUE;

void ReceiveSMSMessage(SMSTest* pMe, uint32 id) {
SMSMsgOpt pwo;
ISMS_ReceiveMsg(pMe->pISMS, id, &pMe->pISMSMsg);
// Get number
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_FROM_DEVICE_SZ, &pwo);
// Get Message
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_PAYLOAD_ENCODING, &pwo);
switch(pwo.pVal) {
case AEE_ENC_ISOLAITIN:
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_PAYLOAD_SZ, &pwo);
// Handle Message
break;
case AEE_ENC_UNICODE:
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_PAYLOAD_WSZ, &pwo);
// Handle Message
break;
default:
// Handle other encodings
}

Registration:
Register with AEECLSID_SMSNOTIFIER
Use NMASK_SMS_TYPE as lower 16 bits of mask
Upper 16 bits specifies the type of SMS

An example:
case EVT_NOTIFY:
{
AEENotify* temp = (AEENotify*)dwParam;
// Receive Message
if(AEECLSID_SMSNOTIFIER == temp->cls &&
(((AEESMS_TYPE_PAGE<<16) | NMASK_SMS_TYPE) ==
temp->dwMask)) {
ReceiveSMSMessage(pMe, (uint32)temp->pData);
}
return TRUE;

void ReceiveSMSMessage(SMSTest* pMe, uint32 id) {
SMSMsgOpt pwo;
ISMS_ReceiveMsg(pMe->pISMS, id, &pMe->pISMSMsg);
// Get number
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_FROM_DEVICE_SZ, &pwo);
// Get Message
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_PAYLOAD_ENCODING, &pwo);
switch(pwo.pVal) {
case AEE_ENC_ISOLAITIN:
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_PAYLOAD_SZ, &pwo);
// Handle Message
break;
case AEE_ENC_UNICODE:
ISMSMSG_GetOpt(pMe->pISMSMsg, MSGOPT_PAYLOAD_WSZ, &pwo);
// Handle Message
break;
default:
// Handle other encodings
}

Registration:
Register with AEECLSID_SMSNOTIFIER
Use NMASK_SMS_TYPE as lower 16 bits of mask
Upper 16 bits specifies the type of SMS

Thanks for the quick reply Jonathan!
I think I'm getting very close but haven't quite got it..
Do I still register for AEECLSID_TAPI (mask NMASK_TAPI_SMS_TS) notifications in the .mif? I removed this but don't get the EVENT_NOTIFY anymore.. Here's what I tried:
1) RegisterNotify. I'm not sure the difference between AEESMS_TYPE_PAGE and AEESMS_TYPE_TEXT but I left it as below:
int isOk = ISHELL_RegisterNotify(m_pIShell, AEECLSID_MYAPP,
AEECLSID_SMSNOTIFIER,
((AEESMS_TYPE_PAGE<<16) | NMASK_SMS_TYPE));
2) Handle EVT_NOTIFY, like you posted below
case EVT_NOTIFY:
{
AEENotify* aee = (AEENotify*)dwParam;
Printf("EVT_NOTIFY: cls:0x%0x, mask:0x%0x", aee->cls, aee->dwMask);
if (aee->cls == AEECLSID_SMSNOTIFIER &&
(aee->dwMask == ((AEESMS_TYPE_PAGE<<16) | NMASK_SMS_TYPE)))
{
uint32 msgId = (uint32)aee->pData;
Printf("EVT_NOTIFY: SMS! msg ID: %d", msgId);
int rc = ISMS_ReceiveMsg(m_pSms, msgId, &m_pSmsMsg);
Printf("ISMS_ReceiveMsg: rc=%d", rc);
if (rc == SUCCESS)
{
// Get number
SMSMsgOpt pwo;
rc = ISMSMSG_GetOpt(m_pSmsMsg, MSGOPT_FROM_DEVICE_SZ, &pwo);
Printf("ISMSMSG_GetOpt: rc=%d", rc);
}
Unfortionately, EVT_NOTIFY isn't getting called at all. I'm sending the SMS from a T-Mobile GPRS phone, if that makes a difference..
I think the only thing I've left out was the ISHELL_CreateInstance() for AEECLSID_SMS and AEECLSID_SMSMSG. Do I need to create an instance of AEECLSID_SMSNOTIFIER as well? That might make sense but I didn't see how it was used..
thanks again!
joe

Thanks for the quick reply Jonathan!
I think I'm getting very close but haven't quite got it..
Do I still register for AEECLSID_TAPI (mask NMASK_TAPI_SMS_TS) notifications in the .mif? I removed this but don't get the EVENT_NOTIFY anymore.. Here's what I tried:
1) RegisterNotify. I'm not sure the difference between AEESMS_TYPE_PAGE and AEESMS_TYPE_TEXT but I left it as below:
int isOk = ISHELL_RegisterNotify(m_pIShell, AEECLSID_MYAPP,
AEECLSID_SMSNOTIFIER,
((AEESMS_TYPE_PAGE<<16) | NMASK_SMS_TYPE));
2) Handle EVT_NOTIFY, like you posted below
case EVT_NOTIFY:
{
AEENotify* aee = (AEENotify*)dwParam;
Printf("EVT_NOTIFY: cls:0x%0x, mask:0x%0x", aee->cls, aee->dwMask);
if (aee->cls == AEECLSID_SMSNOTIFIER &&
(aee->dwMask == ((AEESMS_TYPE_PAGE<<16) | NMASK_SMS_TYPE)))
{
uint32 msgId = (uint32)aee->pData;
Printf("EVT_NOTIFY: SMS! msg ID: %d", msgId);
int rc = ISMS_ReceiveMsg(m_pSms, msgId, &m_pSmsMsg);
Printf("ISMS_ReceiveMsg: rc=%d", rc);
if (rc == SUCCESS)
{
// Get number
SMSMsgOpt pwo;
rc = ISMSMSG_GetOpt(m_pSmsMsg, MSGOPT_FROM_DEVICE_SZ, &pwo);
Printf("ISMSMSG_GetOpt: rc=%d", rc);
}
Unfortionately, EVT_NOTIFY isn't getting called at all. I'm sending the SMS from a T-Mobile GPRS phone, if that makes a difference..
I think the only thing I've left out was the ISHELL_CreateInstance() for AEECLSID_SMS and AEECLSID_SMSMSG. Do I need to create an instance of AEECLSID_SMSNOTIFIER as well? That might make sense but I didn't see how it was used..
thanks again!
joe

Actually, I think I got it. I changed to AEESMS_TYPE_TEXT and it worked! I was able to get the sender's phone number from a non-brew SMS.
int isOk = ISHELL_RegisterNotify(m_pIShell, AEECLSID_FASTCHAT,
AEECLSID_SMSNOTIFIER,
((AEESMS_TYPE_TEXT<<16) | NMASK_SMS_TYPE));
thanks,
joe

Actually, I think I got it. I changed to AEESMS_TYPE_TEXT and it worked! I was able to get the sender's phone number from a non-brew SMS.
int isOk = ISHELL_RegisterNotify(m_pIShell, AEECLSID_FASTCHAT,
AEECLSID_SMSNOTIFIER,
((AEESMS_TYPE_TEXT<<16) | NMASK_SMS_TYPE));
thanks,
joe

Hi,
I am working in BREW 3.1.2 Environment, and I am developing an app which deals with SMS. I am trying to add SMSNotifier to the mif file under notifications tab. But i am not getting the AEECLSID_SMSNOTIFIER. I have only AEECLSID_TAPI, AEECLSID_NET, AEECLSID_SHELL. Wht to do? Any ideas on this problem? :confused:
Thanks
Sunil

Hi,
I am working in BREW 3.1.2 Environment, and I am developing an app which deals with SMS. I am trying to add SMSNotifier to the mif file under notifications tab. But i am not getting the AEECLSID_SMSNOTIFIER. I have only AEECLSID_TAPI, AEECLSID_NET, AEECLSID_SHELL. Wht to do? Any ideas on this problem? :confused:
Thanks
Sunil

Hi sunil,
solve ur problem?.If Solved plz post the solution.Because iam also facing this problem.
Thanks
Premlal

Hi sunil,
solve ur problem?.If Solved plz post the solution.Because iam also facing this problem.
Thanks
Premlal

Jonathan,
Thanks for the example code, it was very helpful.
One quick question, is there a way to suppress the native SMS application from popping up when you receive a SMS?

Jonathan,
Thanks for the example code, it was very helpful.
One quick question, is there a way to suppress the native SMS application from popping up when you receive a SMS?

hello Everybody ,
thanx a lot for all the previous post that was really of great help.but i have a small problem when i try to regsiter using the code
ISHELL_RegisterNotify(pIShell, AEECLSID_CALLHOOK,AEECLSID_SMSNOTIFIER,
((AEESMS_TYPE_TEXT<<16) | NMASK_SMS_TYPE));
I get the compile time error undefined types AEESMS_TYPE_TEXT and NMASK_SMS_TYPE.
can u please tell me how do i solve this any header file reference needed ? i m using brew 3.1.5. or how can i do that in mif file
thanx in advance.

hello Everybody ,
thanx a lot for all the previous post that was really of great help.but i have a small problem when i try to regsiter using the code
ISHELL_RegisterNotify(pIShell, AEECLSID_CALLHOOK,AEECLSID_SMSNOTIFIER,
((AEESMS_TYPE_TEXT<<16) | NMASK_SMS_TYPE));
I get the compile time error undefined types AEESMS_TYPE_TEXT and NMASK_SMS_TYPE.
can u please tell me how do i solve this any header file reference needed ? i m using brew 3.1.5. or how can i do that in mif file
thanx in advance.

I can read all the sms content in Brew Applicaton, can I change the content then show the changed content to user when he received rubbish sms?
please help me.

I can read all the sms content in Brew Applicaton, can I change the content then show the changed content to user when he received rubbish sms?
please help me.

Hi Little,
What do u mean by rubbish content? If you are getting the SMS Text, you can surely modify that while displaying...... But if you want to update the message, you can do it in 3.x devices! You can use ISMSSTORAGE_UpdateMsg to update the SMS in Inbox. :)
Regards,
Sunil

Hi Little,
What do u mean by rubbish content? If you are getting the SMS Text, you can surely modify that while displaying...... But if you want to update the message, you can do it in 3.x devices! You can use ISMSSTORAGE_UpdateMsg to update the SMS in Inbox. :)
Regards,
Sunil

hi suneel
can u tell me how to get the text of incoming msgs....
n is it possible to get the inbox msgs through brew app..

hi suneel
can u tell me how to get the text of incoming msgs....
n is it possible to get the inbox msgs through brew app..

Hi Asheesh,
You can read the SMSs from Inbox using ISMSStorage_ReadMsg. But this API is available for only 3.x devices. For 2.x devices you can capture all the incoming messages by registering through a mif notification. We tried on Moto RAZR, VX9800, and LG VX8500. We are able to read from VX8500 but not from VX9800 or Moto RAZR. The reason is, if you use BREW 3.1.2, ISMSStorage_ReadMsg won't work or it may crash the phone. Qualcomm has suggested to use BREW 3.1.5, but as of now we didn't get any BREW 3.1.5 device. But it worked on VX8500(BREW 3.1.4). Same thing happens on simulator too.. :D
Regards,
Sunil

Hi Asheesh,
You can read the SMSs from Inbox using ISMSStorage_ReadMsg. But this API is available for only 3.x devices. For 2.x devices you can capture all the incoming messages by registering through a mif notification. We tried on Moto RAZR, VX9800, and LG VX8500. We are able to read from VX8500 but not from VX9800 or Moto RAZR. The reason is, if you use BREW 3.1.2, ISMSStorage_ReadMsg won't work or it may crash the phone. Qualcomm has suggested to use BREW 3.1.5, but as of now we didn't get any BREW 3.1.5 device. But it worked on VX8500(BREW 3.1.4). Same thing happens on simulator too.. :D
Regards,
Sunil

Sunil,thank you very much!
rubbish content, such as some advertisement content, it arrives in the middlenight some time, it trouble someone to have a good sleep.
There are little brew 3.x devices in china, some are brew 2.1.
I did as the following steps:
1. I register a AEECLSID_TAPI notification, and set mask code to NMASK_TAPI_SMS_TS in the mif file.
2. read the sms content in the EVT_NOTIFY when a sms coming.
3. change the sms content in the AEENotify. then I want to the sms inbox can show the changed content to user,but the sms box still show old content to user, not changed content.
the first two steps are success,but it fail at the third step.please help me.
Best Regards
Little

Sunil,thank you very much!
rubbish content, such as some advertisement content, it arrives in the middlenight some time, it trouble someone to have a good sleep.
There are little brew 3.x devices in china, some are brew 2.1.
I did as the following steps:
1. I register a AEECLSID_TAPI notification, and set mask code to NMASK_TAPI_SMS_TS in the mif file.
2. read the sms content in the EVT_NOTIFY when a sms coming.
3. change the sms content in the AEENotify. then I want to the sms inbox can show the changed content to user,but the sms box still show old content to user, not changed content.
the first two steps are success,but it fail at the third step.please help me.
Best Regards
Little

Little,
You can't update the SMS which is already there in Inbox on BREW 2.x devices. There is no such API to do so in BREW 2.x. But you can surely do it on BREW 3.x devices..
Regards,
Sunil

Little,
You can't update the SMS which is already there in Inbox on BREW 2.x devices. There is no such API to do so in BREW 2.x. But you can surely do it on BREW 3.x devices..
Regards,
Sunil

Hi Sunil,
I think maybe the sms content to AEENoty and the sms content to sms inbox are same in the memory, I change the content in memory, maybe can change. how do you think this way?
Best Regards

Hi Sunil,
I think maybe the sms content to AEENoty and the sms content to sms inbox are same in the memory, I change the content in memory, maybe can change. how do you think this way?
Best Regards

Hey Little,
When u get EVT_NOTIFY, you are extracting the SMS Text from it to your own buffer.. It will be raw text, from raw text you are going to extract it and you may modify it to display the SMS... It won't modify the actual SMS text.. :mad:
Regards,
Sunil

Hey Little,
When u get EVT_NOTIFY, you are extracting the SMS Text from it to your own buffer.. It will be raw text, from raw text you are going to extract it and you may modify it to display the SMS... It won't modify the actual SMS text.. :mad:
Regards,
Sunil

hi suneel...
for getting incomong msg text i am using ITAPI_ExtractSMSText() n i also set notification flag in mif also...but wen i am reaching on ITAPI_ExtractSMSText() api its showing access violation in emulator.....
can u tell me how to get text from in cuming msgs.....
i tried lots but i didn't get the success...
can u tell me but step i hv to follow for getting text of incoming messages...
plz help me out.

hi suneel...
for getting incomong msg text i am using ITAPI_ExtractSMSText() n i also set notification flag in mif also...but wen i am reaching on ITAPI_ExtractSMSText() api its showing access violation in emulator.....
can u tell me how to get text from in cuming msgs.....
i tried lots but i didn't get the success...
can u tell me but step i hv to follow for getting text of incoming messages...
plz help me out.

Hi Asheesh,
In the Mif file, Set the TAPI Notifier, keep the Mask as NMASK_TAPI_SMS_TS. This is a notification mask that allows applications to register for SMS message of a specific TeleService ID. To construct the actual 32-bit mask to be used in the MIF for the registration, the upper 16 bits of the mask must contain the TeleService ID value and the lower 16 bits must contain the value 0x0004 (which corresponds to NMASK_TAPI_SMS_TS). For example i used TS ID: 1002, So my mask value is 0x10020004, where upper 16 bits id TS ID, and lower 16 bits is NMASK_TAPI_SMS_TS. "You need to mention the TS ID in Value tab under the notification."
In EVT_NOTIFY:
AEESMSTextMsg *pAEESMSTextMsg;
AEENotify* temp = (AEENotify*)dwParam;
if(AEECLSID_TAPI == temp->cls &&
(temp->dwMask == 0x10020004))
{
pMe->pAEESMSMsg = (AEESMSMsg *)temp->pData;
pAEESMSTextMsg = ITAPI_ExtractSMSText(pMe->pTAPI, pMe->pAEESMSMsg);
DBGPRINTF("text length: %d", pAEESMSTextMsg->nChars);
DBGPRINTF("text: %s", pAEESMSTextMsg->szText);

This will give u the SMS Text.. :)
Regards,
Sunil

Hi Asheesh,
In the Mif file, Set the TAPI Notifier, keep the Mask as NMASK_TAPI_SMS_TS. This is a notification mask that allows applications to register for SMS message of a specific TeleService ID. To construct the actual 32-bit mask to be used in the MIF for the registration, the upper 16 bits of the mask must contain the TeleService ID value and the lower 16 bits must contain the value 0x0004 (which corresponds to NMASK_TAPI_SMS_TS). For example i used TS ID: 1002, So my mask value is 0x10020004, where upper 16 bits id TS ID, and lower 16 bits is NMASK_TAPI_SMS_TS. "You need to mention the TS ID in Value tab under the notification."
In EVT_NOTIFY:
AEESMSTextMsg *pAEESMSTextMsg;
AEENotify* temp = (AEENotify*)dwParam;
if(AEECLSID_TAPI == temp->cls &&
(temp->dwMask == 0x10020004))
{
pMe->pAEESMSMsg = (AEESMSMsg *)temp->pData;
pAEESMSTextMsg = ITAPI_ExtractSMSText(pMe->pTAPI, pMe->pAEESMSMsg);
DBGPRINTF("text length: %d", pAEESMSTextMsg->nChars);
DBGPRINTF("text: %s", pAEESMSTextMsg->szText);

This will give u the SMS Text.. :)
Regards,
Sunil

hi suneel....first of all thanx for ur rply....
i want to knw one more thg......how to get TS ID which i am using in my app...

hi suneel....first of all thanx for ur rply....
i want to knw one more thg......how to get TS ID which i am using in my app...

Asheesh,
Give a try using 1002. That should work... Teleservice ids are analogous to the notion of a port number in the TCP/IP protocol; different teleservice ID's are used for different purposes, such as WAP push notifications or voicemail notifications.
Regards,
Sunil

Asheesh,
Give a try using 1002. That should work... Teleservice ids are analogous to the notion of a port number in the TCP/IP protocol; different teleservice ID's are used for different purposes, such as WAP push notifications or voicemail notifications.
Regards,
Sunil

hi suneel..
wen i trying to get text of msg my temp->dwMask is not returing 0x10020004...
it returning some garbage value can u tell buts the error..

hi suneel..
wen i trying to get text of msg my temp->dwMask is not returing 0x10020004...
it returning some garbage value can u tell buts the error..

Hey Asheesh,
Chk the Mif settings..
Notification: AEECLSID_TAPI
Type : System
Notifier : AEECLSID_TAPI
Mask : NMASK_TAPI_SMS_TS
Value : 0x1002
Regards,
Sunil

Hey Asheesh,
Chk the Mif settings..
Notification: AEECLSID_TAPI
Type : System
Notifier : AEECLSID_TAPI
Mask : NMASK_TAPI_SMS_TS
Value : 0x1002
Regards,
Sunil

hi i did the same thg....
but wen i m trying to get msg in emulator its showing access violation .....
n dwmask value is also different....
i am using brew -3.1.5 version...

hi i did the same thg....
but wen i m trying to get msg in emulator its showing access violation .....
n dwmask value is also different....
i am using brew -3.1.5 version...

i am registering AEECLSID_TAPI and AEECLSID_SMSNOTIFIER uisng ISHELL_RegisterNotify() in the EVT_APP_START ....
is it right???

i am registering AEECLSID_TAPI and AEECLSID_SMSNOTIFIER uisng ISHELL_RegisterNotify() in the EVT_APP_START ....
is it right???

hi suneel...
plz help me out in this prblm.....
plz tell me the step which i m following is it write or not....

hi suneel...
plz help me out in this prblm.....
plz tell me the step which i m following is it write or not....

Asheesh,
You said u r using ISHELL_RegisterNotify.. But if u r using this u should at least run ur application once, before u try to receive the message. I suggest u to register the notification from the mif file than thru ISHELL_RegisterNotify!
Regards,
Sunil

Asheesh,
You said u r using ISHELL_RegisterNotify.. But if u r using this u should at least run ur application once, before u try to receive the message. I suggest u to register the notification from the mif file than thru ISHELL_RegisterNotify!
Regards,
Sunil

Hi,
I want to use ISMSStorage to UpdateMsg, but it need the AEESMSStorageType, I cant get it from ISMSMSG, help me.
Best Regards

Hi,
I want to use ISMSStorage to UpdateMsg, but it need the AEESMSStorageType, I cant get it from ISMSMSG, help me.
Best Regards

Hi,Sunil,
I want to update UpdateMsg one incomming sms, but the ISMSSTORAGE_UpdateMsg need to know the AEESMSStorageType of this sms, I cant get it from ISMSMsg. can you help me?
Best Regards

Hi,Sunil,
I want to update UpdateMsg one incomming sms, but the ISMSSTORAGE_UpdateMsg need to know the AEESMSStorageType of this sms, I cant get it from ISMSMsg. can you help me?
Best Regards

hi suneel.....
again i want to know some things...
i am following each step which u told..... but my temp->dwMask is not returing 10020004....
plz tell me hw to solve this problem....
once again thanx in advance..

hi suneel.....
again i want to know some things...
i am following each step which u told..... but my temp->dwMask is not returing 10020004....
plz tell me hw to solve this problem....
once again thanx in advance..

Hi Ashish,
Please go thru this link:
chk this link http://brewforums.qualcomm.com/showthread.php?t=15212
Regards,
Sunil

Hi Ashish,
Please go thru this link:
chk this link http://brewforums.qualcomm.com/showthread.php?t=15212
Regards,
Sunil

Hi,
I have the same probelm Sunil posted here in the past, but I'm still not sure what is the solution -
I am working in BREW Environment, and I am developing an app which deals with SMS. I am trying to add SMSNotifier to the mif file under notifications tab. But I am not getting the AEECLSID_SMSNOTIFIER. I have only AEECLSID_TAPI, AEECLSID_NET, AEECLSID_SHELL. Wht to do? Any ideas on this problem?
Does it mean I must use IShell_RegisterNotify, and can't use the mif in such a case?
Thanks
Tsoofit

Hi,
I have the same probelm Sunil posted here in the past, but I'm still not sure what is the solution -
I am working in BREW Environment, and I am developing an app which deals with SMS. I am trying to add SMSNotifier to the mif file under notifications tab. But I am not getting the AEECLSID_SMSNOTIFIER. I have only AEECLSID_TAPI, AEECLSID_NET, AEECLSID_SHELL. Wht to do? Any ideas on this problem?
Does it mean I must use IShell_RegisterNotify, and can't use the mif in such a case?
Thanks
Tsoofit

You can add through MIF.
Select Type as "custom", Add Notifier as classid "AEECLSID_SMSNOTIFIER", add mask like NMASK_SMS_TYPE.
see ISMSNotifier notifier for supported masks & other details.

You can add through MIF.
Select Type as "custom", Add Notifier as classid "AEECLSID_SMSNOTIFIER", add mask like NMASK_SMS_TYPE.
see ISMSNotifier notifier for supported masks & other details.