|
|
|
@ -220,7 +220,7 @@ int parse_event_queuemember( EVENT *event, s_manager *smanager ){
|
|
|
|
|
agent = name + 6; |
|
|
|
|
ramal = get_peer_location( location, txt ); |
|
|
|
|
if(!ramal){ |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", state_interface, __FILE__, __LINE__ ); |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", location, __FILE__, __LINE__ ); |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -229,7 +229,7 @@ int parse_event_queuemember( EVENT *event, s_manager *smanager ){
|
|
|
|
|
agent = NULL; |
|
|
|
|
ramal = get_peer_location( name, txt ); |
|
|
|
|
if(!ramal){ |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", state_interface, __FILE__, __LINE__ ); |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", name, __FILE__, __LINE__ ); |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -237,7 +237,7 @@ int parse_event_queuemember( EVENT *event, s_manager *smanager ){
|
|
|
|
|
agent = NULL; |
|
|
|
|
ramal = get_peer_location( name, txt ); |
|
|
|
|
if(!ramal){ |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", state_interface, __FILE__, __LINE__ ); |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", name, __FILE__, __LINE__ ); |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -346,7 +346,7 @@ fail:
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int parse_event_QueueMemberStatus( EVENT *event, s_manager *smanager ){ |
|
|
|
|
int parse_event_queuememberstatus( EVENT *event, s_manager *smanager ){ |
|
|
|
|
|
|
|
|
|
/* Event: QueueMemberStatus
|
|
|
|
|
* Queue: <value> |
|
|
|
@ -391,11 +391,146 @@ int parse_event_QueueMemberStatus( EVENT *event, s_manager *smanager ){
|
|
|
|
|
* 1 |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
const char *queue, *member_name, *interface, *member_static; |
|
|
|
|
unsigned int _static, penalty, callstaken, lastcall, incall, status, paused, ringuse; |
|
|
|
|
const char *agent, *ramal, *queue, *member_name, *interface, *member_static; |
|
|
|
|
char txt[100]; |
|
|
|
|
unsigned int _static, penalty, callstaken, lastcall, incall, status, paused; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
state_interface = ami_get_value( smanager->ami, event->args, "StateInterface" ); |
|
|
|
|
// nome fila
|
|
|
|
|
queue = ami_get_value( smanager->ami, event->args, "Queue" ); |
|
|
|
|
if(!queue){ goto fail; } |
|
|
|
|
|
|
|
|
|
interface = ami_get_value( smanager->ami, event->args, "Interface" ); |
|
|
|
|
if(!interface){ goto fail; } |
|
|
|
|
|
|
|
|
|
member_name = ami_get_value( smanager->ami, event->args, "MemberName" ); |
|
|
|
|
if(!member_name){ goto fail; } |
|
|
|
|
|
|
|
|
|
if( strstr( member_name, "Agent" ) ){ |
|
|
|
|
agent = member_name + 6; |
|
|
|
|
ramal = get_peer_location( interface, txt ); |
|
|
|
|
if(!ramal){ |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", interface, __FILE__, __LINE__ ); |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
else if( strstr( member_name, "SIP" ) ){ |
|
|
|
|
agent = NULL; |
|
|
|
|
ramal = get_peer_location( member_name, txt ); |
|
|
|
|
if(!ramal){ |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", member_name, __FILE__, __LINE__ ); |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else if( strstr( member_name, "IAX" ) ){ |
|
|
|
|
agent = NULL; |
|
|
|
|
ramal = get_peer_location( member_name, txt ); |
|
|
|
|
if(!ramal){ |
|
|
|
|
_WARNING("Vazio state_interface = %s - FILE %s Line %d", member_name, __FILE__, __LINE__ ); |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// membro estático, dinâmico
|
|
|
|
|
member_static = ami_get_value( smanager->ami, event->args, "Membership" ); |
|
|
|
|
if(!member_static){ goto fail;} |
|
|
|
|
_static = atoi(member_static); |
|
|
|
|
if( !strcasecmp_n( member_static, "static" ) ){ |
|
|
|
|
_static = 1; |
|
|
|
|
} else if( !strcasecmp_n( member_static, "dynamic" ) ){ |
|
|
|
|
_static = 0; |
|
|
|
|
} else{ |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
penalty = atoi(ami_get_value( smanager->ami, event->args, "Penalty" )); |
|
|
|
|
|
|
|
|
|
callstaken = atoi(ami_get_value( smanager->ami, event->args, "CallsTaken" )); |
|
|
|
|
|
|
|
|
|
lastcall = atoi(ami_get_value( smanager->ami, event->args, "LastCall" )); |
|
|
|
|
|
|
|
|
|
incall = atoi(ami_get_value( smanager->ami, event->args, "InCall" )); |
|
|
|
|
|
|
|
|
|
status = atoi(ami_get_value( smanager->ami, event->args, "Status" )); |
|
|
|
|
|
|
|
|
|
paused = atoi(ami_get_value( smanager->ami, event->args, "Paused" )); |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
struct s_table_queue_member *table_queue_member = get_queue_member_db( Select_queuemember, ramal, queue ); |
|
|
|
|
if( table_queue_member ){ |
|
|
|
|
if(_static != table_queue_member->_static || |
|
|
|
|
penalty != table_queue_member->penalty || |
|
|
|
|
callstaken != table_queue_member->calls_taken || |
|
|
|
|
lastcall != table_queue_member->last_call || |
|
|
|
|
incall != table_queue_member->in_call || |
|
|
|
|
status != table_queue_member->status || |
|
|
|
|
paused != table_queue_member->paused ) { |
|
|
|
|
|
|
|
|
|
if( update_queue_member_db( Update_queuemember, agent, _static, penalty, callstaken, lastcall, incall, status, paused, table_queue_member->queue_member_id ) == -1 ){ |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
insert_queue_member_db( Insert_queuemember, queue, ramal, agent, _static, penalty, callstaken, lastcall, incall, status, paused ); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
struct s_queue_member *member = get_queue_member_name( ramal, queue ); |
|
|
|
|
/* char *queue_name;
|
|
|
|
|
* int _static; |
|
|
|
|
* int calls_taken; |
|
|
|
|
* int last_call; |
|
|
|
|
* int in_call; |
|
|
|
|
* int status; |
|
|
|
|
* int paused; |
|
|
|
|
*/ |
|
|
|
|
if(member){ |
|
|
|
|
if( strcasecmp( queue, member->queue_name )){ |
|
|
|
|
free( member->queue_name ); |
|
|
|
|
newstrncpy( &member->queue_name, queue); |
|
|
|
|
} |
|
|
|
|
else if( member->_static != _static ){ |
|
|
|
|
member->_static = _static; |
|
|
|
|
} |
|
|
|
|
else if( member->calls_taken != callstaken ){ |
|
|
|
|
member->calls_taken = callstaken; |
|
|
|
|
} |
|
|
|
|
else if( member->last_call != lastcall){ |
|
|
|
|
member->last_call = lastcall; |
|
|
|
|
} |
|
|
|
|
else if( member->in_call != incall ){ |
|
|
|
|
member->in_call = incall; |
|
|
|
|
} |
|
|
|
|
else if(member->status != status ){ |
|
|
|
|
member->status = status; |
|
|
|
|
} |
|
|
|
|
else if(member->paused != paused){ |
|
|
|
|
member->paused = paused; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
member = create_queue_member( ); |
|
|
|
|
newstrncpy( &member->queue_name, queue ); |
|
|
|
|
member->_static = _static; |
|
|
|
|
member->penalty = penalty; |
|
|
|
|
member->calls_taken = callstaken; |
|
|
|
|
member->last_call = lastcall; |
|
|
|
|
member->in_call = incall; |
|
|
|
|
member->status = status; |
|
|
|
|
member->paused = paused; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 1; |
|
|
|
|
|
|
|
|
|
fail: |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|