Yu.Ding 1 ヶ月 前
コミット
f4862b9ffb
4 ファイル変更159 行追加4 行削除
  1. 1 1
      generate_group_conf.c
  2. 3 3
      generate_group_conf_acorp.c
  3. 1 0
      generate_user_conf.c
  4. 154 0
      joinmeetme.c

+ 1 - 1
generate_group_conf.c

@@ -261,7 +261,7 @@ same => n,GotoIf($[\"foo${PAGING_RECORD}\" != \"fooyes\"]?unrc)\n\
 same => n,System(/bin/sh /etc/scripts/shell_scripts.sh mkrcdir paging ${DATE})\n\
 same => n,Set(FILENAME=paging/${DATE}/paging-${SRCEXTEN}-${UUID}.wav)\n\
 same => n,MixMonitor(${FILENAME},b)\n\
-same => n(unrc),Gusub(get-user-level,s,1(${SRCEXTEN},))\n\
+same => n(unrc),Gosub(get-user-level,s,1(${SRCEXTEN},))\n\
 same => n,AGI(agi://${AGISERVERHOST}:${AGISERVERPORT},paging,${DESTS},${SESSION_LEVEL},${SESSION_USERID})\n\
 same => n,ExecIf(${ISNULL(${DESTS})}?Hangup())\n\
 same => n,ExecIf($['foo${enPaging_prompt_start}'='fooyes']?Set(STARTPROMPT=qA(${Paging_start_file})))\n\

+ 3 - 3
generate_group_conf_acorp.c

@@ -223,11 +223,11 @@ same => n,GotoIf($[\"foo${PAGING_RECORD}\" != \"fooyes\"]?unrc)\n\
 same => n,System(/bin/sh /etc/scripts/shell_scripts.sh mkrcdir paging ${DATE})\n\
 same => n,Set(FILENAME=paging/${DATE}/paging-${SRCEXTEN}-${UUID}.wav)\n\
 same => n,MixMonitor(${FILENAME},b)\n\
-same => n(unrc),Wait(0.5)\n\
-same => n,Set(__CONFNO=${EXTEN})\n\
+same => n(unrc),Set(__CONFNO=${EXTEN})\n\
 same => n,MSet(startT=${STRFTIME(${EPOCH},,%%s)},__CALLEE=${DESTS},__calltype=paging)\n\
 same => n,MSet(CONFBRIDGE(user,quiet)=yes,CONFBRIDGE(user,marked)=yes)\n\
-same => n,AGI(joinmeetme.agi,${CONFNO},${SRCEXTEN},${DESTS})\n\
+same => n,AGI(agi://${AGISERVERHOST}:${AGISERVERPORT},alarmCall,${CONFNO},${SRCEXTEN},${DESTS})\n\
+same => n,UserEvent(controlEvent,sessionlevel:${SESSION_LEVEL},sessionuserid:${SESSION_USERID},src:${SRCEXTEN},dest:,uuid:${UUID},status:Answered)\n\
 same => n,ConfBridge(${CONFNO})\n\
 same => n,Hangup\n\
 exten => h,1,Goto(checkmeetme,s,1)\

+ 1 - 0
generate_user_conf.c

@@ -355,6 +355,7 @@ musicclass = queuemusic\n\
                     fprintf(conf_users_fp, "exten => %s,1,Gosub(stdexten,s,1(%s,PJSIP/%s))\n",wb_row[0],wb_row[0],wb_row[0]);
                     fprintf(global_fp, "USER_ID_%s = %d\n",wb_row[0],id);
                     fprintf(global_fp, "USER_LEVEL_%s = %s\n",wb_row[0],u_row[6]);
+                    fprintf(global_fp, "WEB_USER_%s = %d\n",wb_row[0],id);
                     fprintf(conf_user_queue_fp, "exten => %s,1,Gosub(queue,s,1(Q%d,${EXTEN},%s))\n", wb_row[0],q,u_row[3]);
                     fprintf(conf_user_queue_fp, "same => n,%s\n", noanswer_dest);
                     fprintf(conf_user_context_fp, "[DialRule_%s]\n",wb_row[0]);

+ 154 - 0
joinmeetme.c

@@ -0,0 +1,154 @@
+/*
+============================================================================
+Name        : generate_paging_conf.sh
+Author      : ssc
+Version     : v1.0
+Copyright   : ZYCOO copyright
+Description : Generate paging info from mysql to paging conf file
+============================================================================
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#include <time.h>
+#include <ctype.h>
+// #include <mysql/mysql.h>
+
+// MYSQL *g_conn; // mysql 连接
+// MYSQL_RES *g_res; // mysql group记录集
+// MYSQL_ROW g_row; // 字符串数组,mysql 记录行
+// MYSQL_RES *d_res; // mysql device记录集
+// MYSQL_ROW d_row; // 字符串数组,mysql 记录行
+
+#define MAX_TRUNK_SIZE 256
+#define MAX_SIZE 5120
+#define MIDLE_SIZE 512
+#define MINI_SIZE 64
+#define KEYVALLEN 100
+#define VERSION "V1.0.1"
+
+// char g_host_name[MINI_SIZE];
+// char g_user_name[MINI_SIZE];
+// char g_password[MINI_SIZE];
+// char g_db_name[MINI_SIZE];
+// const unsigned int g_db_port = 3306;
+// char sql_tmp[MIDLE_SIZE];
+
+// char * mytime(){
+//         time_t my_time;
+//         time(&my_time);
+//         char *time_string = ctime(&my_time);
+//         if (time_string[strlen(time_string) - 1] == '\n')
+//         {
+//                 time_string[strlen(time_string) - 1] = '\0';
+//         }
+//         return time_string;
+// }
+
+// void print_mysql_error(const char *msg) { // 打印最后一次错误
+// if (msg)
+//     printf("%s: %s\n", msg, mysql_error(g_conn));
+// else
+//     puts(mysql_error(g_conn));
+// }
+
+// int executesql(const char * sql) {
+// /*query the database according the sql*/
+// if (mysql_real_query(g_conn, sql, strlen(sql))) // 如果失败
+//     return -1; // 表示失败
+
+// return 0; // 成功执行
+// }
+
+
+// int init_mysql() { // 初始化连接
+// // init the database connection
+// g_conn = mysql_init(NULL);
+
+// /* connect the database */
+// if(!mysql_real_connect(g_conn, g_host_name, g_user_name, g_password, g_db_name, g_db_port, NULL, 0)) // 如果失败
+//     return -1;
+
+// // 是否连接已经可用
+// if (executesql("set names utf8")) // 如果失败
+//     return -1;
+
+// return 0; // 返回成功
+// }
+
+int main(int argc, char **argv) {
+
+    char confno[36], callfile[64], cmd[128];
+    char *exten;
+
+// memset(g_host_name, 0, sizeof(g_host_name));
+// memset(g_user_name, 0, sizeof(g_user_name));
+// memset(g_password, 0, sizeof(g_password));
+// memset(g_db_name, 0, sizeof(g_db_name));
+// strcpy(g_host_name,getenv("MYSQL"));
+// strcpy(g_user_name,getenv("MYSQL_USER"));
+// strcpy(g_password,getenv("MYSQL_PASSWORD"));
+// strcpy(g_db_name,getenv("MYSQL_DATABASE"));
+// if (init_mysql()){
+//     print_mysql_error(NULL);
+//     exit(1);
+// }
+
+
+strcpy(confno, argv[1]);
+
+exten = strtok(argv[3], "|");
+
+while (exten != NULL)
+{
+    // sprintf(sql_tmp, "SELECT user_id FROM t_paging_devices WHERE exten='%s'", exten);
+    // if (executesql(sql_tmp)){
+    //     print_mysql_error(NULL);
+    //     exit(1);
+    // }
+    // g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集
+    // g_row=mysql_fetch_row(g_res);
+    // if (g_row && g_row[0] != NULL){
+    //     strcpy(mark, "yes");
+    // }
+    // else
+    // {
+    //     strcpy(mark, "no");
+    // }
+    memset(callfile, 0, sizeof(callfile));
+    sprintf(callfile, "/tmp/meetme-%s-%s.call", confno, exten);
+    FILE *callfile_fp = fopen(callfile, "w+");
+    fprintf(callfile_fp, "\
+Channel: Local/%s@phones-group-%s\n\
+Context: join-dynamic-meetme\n\
+Extension: s\n\
+Priority: 1\n\
+Callerid: %s\n\
+MaxRetries: 30\n\
+RetryTime: 10\n\
+Setvar: CONFNO=%s\n\
+Setvar: DEST=%s\n\
+Setvar: alarmCall=no\n\
+WaitTime: 600\n\
+\n", \
+exten,\
+confno,\
+exten,\
+confno,\
+exten\
+);
+
+    fclose(callfile_fp);
+    sprintf(cmd, "mv %s /var/spool/asterisk/outgoing/", callfile);
+    system(cmd);
+    exten = strtok(NULL, "|");
+}
+
+
+// mysql_free_result(g_res); // 释放结果集
+// mysql_close(g_conn); // 关闭链接
+return 0;
+}