[SIPForum-discussion] Script to call( incoming and outgoing ) with ASTERISK.

Rachel Baskaran rachelbaskaran at gmail.com
Mon Aug 24 17:32:44 UTC 2009


Hey,

Now If I already have a ASTERISK at my workplace, how I need to connect to
my other SIP acc or say my colleague?

Will the following script be enough to do the job?

#include<pjsua-lib/pjsua.h>

#define THIS_FILE       "APP"
#define SIP_DOMAIN   "test.com" ( where my company domain fits here )
#define SIP_USER       "rachel"
#define SIP_PASSWD   "test"

*//function call for incoming call with acc_id, call_id*
static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id,
pjsip_rx_data *rdata)
{
pjsua_call_info ci;

PJ_UNUSED_ARG(acc_id);
PJ_UNUSED_ARG(rdata);

pjsua_call_get_info(call_id, &ci);

PJ_LOG(3,(THIS_FILE, "Incoming call from %.*s!!", (int)ci.remote_info.slen,
ci.remote_info.ptr));

pjsua_call_answer(call_id, 200, NULL, NULL);
}


*//main() where argv[] contains URI to call to*
int main(int argc, char *argv[])
{
pjsua_acc_id acc_id;
pj_status_t status;


status = pjsua_create();
if(status != PJ_SUCESS)
error_exit("Error in pjsua_create()", status);


if(argc > 1) {
status = pjsua_verify_sip_url(argv[1]);
if(status != PJ_SUCESS)
error_exit("Invalid URL in argv", status);
}

*//Variable dec for config files*
pjsua_config cfg;
pjsua_logging_config log_cfg;

pjsua_config_default(&cfg);
cfg.cb.on_incoming_call = &on_incoming_call;

pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 4;


*//Intilize pjsua *
status = pjsua_init(&cfg, &log_cfg, NULL);
if(status != PJ_SUCESS)
error_exit("Error in pjsua_init()", status);
}

*//transport through UDP *
{
pjsua_transport_config cfg;


pjsua_transport_config_default(&cfg);
cfg.port = 5060;
 status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if(status != PJ_SUCESS)
error_exit("Error creating transport", status);
}

status = pjsua_start();
if(status != PJ_SUCESS)
error_exit("Error starting pjsua", status);
}

if(argc > 1){
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if(status != PJ_SUCESS)
error_exit("Error making call", status);
}

for(;;){
char option[10];

puts("Press 'h to hangup all calls, 'q'  to quit");
if(fgets(option, sizeof(option), stdin) == NULL){
puts("EOF while reading stdin, will quit now...");
break;
}

if (option[0] == 'q')
break;
if(option[0] == 'h')
pjsua_call_hangup_all();
}
pjsua_destroy();
return 0;
}


let's consider for example, that I'm gonna edit my sip.conf file as
*[general]

[1000] (unique identifier)
type= friend ( includes both user and peer )
context = phones
host = dynamic ( client has a dynamic IP address )*


Does the acc_id refers to my id( i.e rachel ) or my colleague's? What about
the call_id?

If this script is right, where I need to store my script and run with GNU
compiler?

Any help would be great!


Thanks
Rachel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sipforum.org/pipermail/discussion/attachments/20090824/27436ff1/attachment-0002.html>


More information about the discussion mailing list