This is an old revision of the document!


The output of a telephone number on the serial interface

An incoming call is to be recorded using a SDK script on then output on the serial interface.

To capture the call, we can use the SDK command „nb_voice_event“ and output the result via the SDK script „serial-write.are“ on the serial interface.

Router License Generator

The voice gateway function must have a license in order to use it. Unter the „SYSTEM“ sub-item „Licensing“ you can see your existing licenses.

Integrate into the router

The voice key can now be integrated into the router. This can be done again under the tab „SYSTEM“ under „Licensing“.

The „Upload license file“ option allows you to select the created key. Important is the name of the filekey is equal to the serial of the router. With the button „install“ the license is integrated into the router. Now the sub-point „Voice Gateway“ must be present in the „SERVICES“ tab.

Voice Gateway

Under the tab „Administration“, the admin is released and the SDK is selected under the option „Call Routing“. Now the button „Apply““ can be pressed.

Under the „Endpoints“ tab, select „Voice-over-Mobile“ under „Option Type“. Then the button „Apply“ can be pressed again.

The SDK option must be selected under the „INTERFACES“ tab to ensure that the output generated by the SDK can be output on the serial.

Create a new SDK job

For this, we create a new job under the „SERVICES“ tab in the SDK sub-section of the „Job Management“. Under the „Scripts“ option , we must first assign a name. Under the option „Action“ we can insert the script file via the „upload“. We can confirm this with the „Apply“ button.

Next, we need to set the trigger for the script under the „Triggers“ option. Here again a name must be assigned for the function. Under the Type option, „event-based“ is selected. The function „system-startup“ is used as an event.

As a now option, the job can now be set up. Again, we needed a name. The name for „Trigger“ and „Script“ are the ones we have set up before.

Press the „Apply“ button to confirm the setting.

If one now the rout calls one gets on the serial interface the telephone number of the caller output.

USER
Willkommen zu minicom 2.7

Optionen: I18n Übersetzt am Apr 22 2017, 09:14:19. Port /dev/ttyUSB0, 18:40:05 Drücken Sie CTRL-A Z für Hilfe zu speziellen Tasten

+4917012345678

SDK-Script

The SDK script „serial-write.are“ us extended for output of the call number on the serial interface.

serial-write.are

 /* DESC: This script can be used to write a message to the serial port.
  * Copyright (C) 2017 NetModule AG, Switzerland
  */

 void usage()
 {
  printf("usage: serial-write.are <msg>\n");
  exit(1);
 }

  if (argc < 1) {
     usage(); 
        
  }
     
    DEV = "SERIAL1";

    /* check serial port config */
    st = nb_config_get("serial.0.status");
    if (st != "2") {
       nb_syslog("Serial port is not enabled for us\n");
       exit(2);
    }

    ret = nb_serial_setattr(DEV, 115200, 8, 1, 0, 0);
    if (ret != 0) {
       nb_syslog("Could not set serial attributes: %i \n",ret);
       exit(3);
    }

     while (true) {

           MSG = nb_voice_event(1).call.calling;

      if (!is_void(MSG)) {

         MSG = left(MSG,strlen(MSG)-5);
         MSG = right(MSG,strlen(MSG)-6);

         fd = nb_serial_open(DEV);
         if (fd < 0) {
            nb_syslog("Unable to open %s\n",DEV);
            exit(4);
         }

         message = strcat(MSG, "\r\n");
         ret = write(fd, message, strlen(message));
         if (ret> 0) {
            nb_syslog("Wrote %d bytes to %s\n",ret,DEV);
         } else {
            nb_syslog("Unable to write to %s\n",DEV);
           }

         close(fd);

      }
     }

 exit(0);


exit(0);

The SDK command „nb_voice_event“ makes it possible to query the status of the voice call. At the address of the router http://192.168.1.1/admin/sdk-api-functions.php#sec2.15 can get further information of the command.

With a loop and the SDK command, you get when a voice call comes in.

voice_evenet.are
	while(true)
	{
	dump(nb_voice_event(10));
	}

This structure of output, with the number, status and type output.

void

struct(2): {
  .call = struct(4): {
            .id = int: 577568803
            .called = string[0]: ""
            .calling = string[25]: "vom://+4917012345678@Vom1"
            .state = string[7]: "routing"
          }
  .type = string[8]: "incoming"
}
struct(2): {
  .call = struct(4): {
            .id = int: 577568803
            .called = string[0]: ""
            .calling = string[25]: "vom://+4917012345678@Vom1"
            .state = string[6]: "hungup"
          }
  .type = string[6]: "hungup"
}

void