/*
* На входе имеем такие строчки
* exten => s,n,Set(GLOBAL(CID)=${CALLERID(num):-10})
* exten => s,n,Set(GLOBAL(OPCODE)=${CID:0:3}) //Трех значный идентификатор оператора сотовой связи
* exten => s,n,AGI(/home/DEVELOPMENT/C/Call-Taxi/dist/Debug/GNU-Linux-x86/call-taxi, ${CID}, ${OPCODE})
*
* TODO
* Выделить/определить OPCODE не в диалплане, а в программе и выдать уже готовый результат в виде "OPSOS"
* Определить городской телефон если такого OPCODE нет – определяется (в диалплане так
* OPCODE=${CID:0:4} – в отличии от Сотовых не 3, а 4 знака.
* как это сделать в СИ х-з!
*/
#include "SFL/uniheader.h"
#include "SFL/ciaster/main.h"
/*
*
*/
/*
int main(int argc, char * argv[]) {
int ret = EXIT_SUCCESS;
CiASTER_PROG agi;
AGI_CMD_RESULT res;
char dest[100];
CiASTER_new(&agi);
if (argc <= 1){
CiASTER_verbose(&agi, &res, "Не переданы аргументы", 0);
CiASTER_shutdown(&agi);
ret = -1;
}
else
/*–Определяем оператора связи opsos — */
switch (argv[2]){ /* Эта хрень точно не работает, возможно нужно решать по другому */
case "099":
CiASTER_set_variable(&agi, &res, "OPSOS", "MTS");
CiASTER_set_variable(&agi, &res, "opsosvoice", "mts");
break;
case "050":
CiASTER_variable(&agi, &res, "OPSOS", "MTS");
CiASTER_set_variable(&agi, &res, "opsosvoice", "mts");
break;
case "098":
CiASTER_set_variable(&agi, &res, "OPSOS", "KIEVSTAR");
CiASTER_set_variable(&agi, &res, "opsosvoice", "djkyevstar");
break;
case "097":
CiASTER_set_variable(&agi, &res, "OPSOS", "KIEVSTAR");
CiASTER_set_variable(&agi, &res, "opsosvoice", "djkyevstar");
break;
case "096":
CiASTER_set_variable(&agi, &res, "OPSOS", "KIEVSTAR");
CiASTER_set_variable(&agi, &res, "opsosvoice", "djkyevstar");
break;
case "067":
CiASTER_set_variable(&agi, &res, "OPSOS", "KIEVSTAR");
CiASTER_set_variable(&agi, &res, "opsosvoice", "djkyevstar");
break;
case "063":
CiASTER_set_variable(&agi, &res, "OPSOS", "LIFE");
CiASTER_set_variable(&agi, &res, "opsosvoice", "life");
break;
case "093":
CiASTER_set_variable(&agi, &res, "OPSOS", "LIFE");
CiASTER_set_variable(&agi, &res, "opsosvoice", "life");
break;
case "068":
CiASTER_set_variable(&agi, &res, "OPSOS", "BILINE");
CiASTER_set_variable(&agi, &res, "opsosvoice", "biline");
break;
default :
/* TODO
* ПСЕВДОКОД
* Set(GLOBAL(OPCODE)=${CID:0:4}) //По всей видимости отдельная функция
* char opsos = gts_search(OPCODE)
*
* CiASTER_set_variable(&agi, &res, "OPSOS", opsos);
* CiASTER_set_variable(&agi, &res, "opsosvoice", "gts");
*/
break;
}
CiASTER_shutdown(&agi);
return (ret);
} |