[SIPForum-discussion] Doesn't call the specified URL
Rachel Baskaran
rachelbaskaran at gmail.com
Tue Sep 8 19:13:33 UTC 2009
Hey,
I tried a script to register and once registered call the specified URL. It
registers and I hope since it's example.com, it shows the SIP registration
failed, timeout.
Can I make call,answer and hang-up a call with below code?
I'm attaching the code I'm not sure what am I'm missing?
#include<pjsua-lib/pjsua.h>
#define THIS_FILE "APP"
#define SIP_DST_URI "<sip:100 at example.com <sip%3A100 at example.com>>"
#define SIP_DOMAIN "example.com"
#define SIP_USER "rachel"
#define SIP_PASSWD "secret"
/* Globals */
static pjsua_acc_id acc_id = PJSUA_INVALID_ID;
/* callback for incoming call */
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);
if(acc_id != PJSUA_INVALID_ID) {
pjsua_call_answer(call_id, PJSIP_SC_BUSY_HERE, NULL, NULL);
return;
}
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));
}
/* Display error and exit the app */
static void error_exit(const char *title,pj_status_t status)
{
pjsua_perror(THIS_FILE, title, status);
pjsua_destroy();
exit(1);
}
int main(int argc,char *url)
{
pjsua_acc_id acc_id;
pj_status_t status;
status = pjsua_create();
if(status != PJ_SUCCESS) error_exit("Error in pjsua_create()", status);
if(argc > 1)
{
status = pjsua_verify_sip_url(url);
if(status != PJ_SUCCESS) error_exit("Invalid URL in argv", status);
}
/* Init pjsua */
{
pjsua_config cfg;
pjsua_logging_config log_cfg;
pjsua_config_default(&cfg);
pjsua_logging_config_default(&log_cfg);
log_cfg.console_level = 4;
status = pjsua_init(&cfg, &log_cfg, NULL);
if(status != PJ_SUCCESS) error_exit("Error in pjsua_init()", status);
}
/* add UDP transport */
{
pjsua_transport_config cfg;
pjsua_transport_config_default(&cfg);
cfg.port = 5060;
status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
if(status != PJ_SUCCESS) error_exit("Error creating transport", status);
}
/* start pjsua */
status = pjsua_start();
if(status != PJ_SUCCESS) error_exit("Error starting pjsua", status);
/* Register to SIP server creating an account */
{
pjsua_acc_config cfg;
pjsua_acc_config_default(&cfg);
cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
cfg.cred_count = 1;
cfg.cred_info[0].realm = pj_str(SIP_DOMAIN);
cfg.cred_info[0].username = pj_str(SIP_USER);
cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
cfg.cred_info[0].data = pj_str(SIP_PASSWD);
status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
if(status != PJ_SUCCESS) error_exit("Error adding account", status);
}
if(argc > 1)
{
url = SIP_DST_URI;
pj_str_t uri = pj_str(url);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if(status != PJ_SUCCESS) 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;
}
Will the above work If I use a phone number (
sip:423-678-9983 at sipprovider.com <sip%3A423-678-9983 at sipprovider.com> )?
Provided I have proper dialplan and sip proxy to handle the call from the
PC-PHONE.
Any help would be great!
Thanks!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://sipforum.org/pipermail/discussion/attachments/20090908/9dcb30db/attachment-0002.html>
More information about the discussion
mailing list