1. http接口非restful調用接口:
  2. 寧衛通信
  3. 新聞動態
  4. 寧衛新聞
  5. http接口非restful調用接口

http接口非restful調用接口

//ts格式 time.Now().Format("20060102150405")
//username為用戶名
//password不在實際通信中傳輸,而是經過和時間一起做了md5后打進sign中傳輸
func Check_sign(sign, ts, username, password string) bool {
  //所有的通過http接口調用都需要這樣認證,不論次數,不論哪個接口
  //需要password,ts,username
  nway_ori_str := "password=" + password + "&ts=" + ts + "username=" + username
  h := md5.New()
  h.Write([]byte(nway_ori_str))
  tmp_sign := hex.EncodeToString(h.Sum(nil))
  if sign == tmp_sign {
    return true
  }
  return false
}
//簽權規則
func Nway_comm_chk_sign(P *ParseRequest) (bool, string) {
  sign := P.String("sign", "")
  ts := P.String("ts", "")
  username := P.String("username", "")
    //以上三樣是由請求方發過來的
  if *username != nway_global.Http_service_username {
    logger.Error(*username + " not a valid username")
    return false, "not a valid username"
  }
  //時間必須是當時上海時間五分鐘內
  if Check_time(*ts) == false {
    //時間不在五分鐘內
    logger.Error(*username + "time more than 5 minutes")
    return false, "time more than 5 minutes"
  }
    //按ts,username等,進行生成sign
  if Check_sign(*sign, *ts, *username, nway_global.Http_service_password) == false {
    logger.Error(*username + "sign not a valid sign")
    return false, "sign not a valid sign"
  }
  return true, ""
}
//
func StartHttpService(ipport string) {
  /*
    調用返回結果,肯定都會返回的有以下:
    "info" :用于返回一些信息
    "code" :用于返回調用結果,有以下一些碼:"200ok":成功,"404":找不到資源,"500":服務器錯誤,"401":認證沒通過,"403":sign部分認證不通過
    "execute_result"  :用于返回執行結果
    同時會在接口中返回各自的一些必要參數

  */

  ///agent
  /*
    說明:上線
      輸入:
      extension  分機
      group 組
      返回:
      extension  分機
      group 組
  */
  http.HandleFunc("/agent_up", Http_Agent_up)
  /*
    說明:下線
      輸入:
      extension  分機

      返回:
      extension  分機
  */
  http.HandleFunc("/agent_down", Http_Agent_down)
  /*
    說明:置閑
      輸入:
      extension  分機

      返回:
      extension  分機
  */
  http.HandleFunc("/agent_ready", Http_Agent_ready)
  /*
    說明:置忙
      輸入:
      extension  分機

      返回:
      extension  分機
  */
  http.HandleFunc("/agent_busy", Http_Agent_busy)
  ///vip
  /*
    說明:添加一個vip
      輸入:
      group  組
      phone  電話號碼
      返回:
      group  組
      phone  電話號碼
  */
  http.HandleFunc("/vip_queue_add", Http_Vip_queue_add)
  /*
    說明:刪除一個vip
      輸入:
      group  組
      phone  電話號碼
      返回:
      group  組
      phone  電話號碼
  */
  http.HandleFunc("/vip_queue_remove", Http_Vip_queue_remove)

  //系統信息獲取
  /*
    說明:獲取一個uuid
      輸入:

      返回:
      uuid
  */
  http.HandleFunc("/get_uuid", Http_Get_uuid)
  /*
    說明:心跳檢測
      輸入:

      返回:
          uuid
  */
  http.HandleFunc("/heartbeat", Http_HeartBeat)
  //獲取某個通話中電話的uuid
  /*
    說明:獲取通話中的電話的uuid
      輸入:
        phone 電話號碼
      返回:
          uuid
  */
  http.HandleFunc("/get_phone_uuid", Http_get_phone_uuid)
  //掛斷
  /*
    說明:掛斷某個號碼的通話
      輸入:
        phone 電話號碼
      返回:

  */
  http.HandleFunc("/hangup", Http_hangup)
  //hold和park,park后需要轉到其它電話中去
  /*
    說明:hold某個號碼正在通話的通道
      輸入:
        phone 電話號碼
      返回:

  */
  http.HandleFunc("/hold", Http_hold)
  /*
    說明:unhold某個號碼正在通話的通道
      輸入:
        phone 電話號碼
      返回:

  */
  http.HandleFunc("/unhold", Http_unhold)
  /*
    說明:park某個號碼正在通話的通道
      輸入:
        phone 電話號碼
      返回:

  */
  http.HandleFunc("/park", Http_park)
  /*
    說明:應答某個號碼正在通話的通道
      輸入:
        phone 電話號碼
      返回:

  */
  http.HandleFunc("/phone_answer", Http_phone_answer)
  //黑名單
  /*
    說明:對某個組添加黑名單
      輸入:
        Call_number 電話號碼
        Group_number 組名
      返回:

  */
  http.HandleFunc("/add_black_list", Http_add_black_list)
  /*
    說明:移除某個組里的某個黑名單
      輸入:
        Call_number 電話號碼
        Group_number 組名
      返回:

  */
  http.HandleFunc("/delete_black_list", Http_delete_black_list)
  //呼叫
  /*
    說明:由平臺發起呼叫
      輸入:
        Job_uuid       指定的uuid
        Callername     主叫名稱
        Callernum      主叫號碼
        Calleenum      被叫號三
        A_gatewayname  如果主叫是外線,則需要指定網關名
        B_gatewayname  如果被叫是外線,則需要指定網關名
        A_effective_caller_id_num 在主叫處顯示的號碼
        B_effective_caller_id_num 在被叫處顯示的號碼
        A_external 主叫是外線
        B_external 被叫是外線
      返回:

  */
  http.HandleFunc("/originate", Http_originate)
  //更多originate需要通過restful接口調用
  //代接
  /*
    說明:由平臺發起代接
      輸入:
          phone    用于代接最后來電的號碼,如辦公室最后只有一個人了,這個人調用這個接口,就會呼到這個號碼用于和主叫來通話
      返回:
  */
  http.HandleFunc("/intercept", Http_intercept)
  //監聽
  /*
    說明:由平臺發起代接
      輸入:
        EvdedPhone  被監聽的號碼
        EvdPhone    要呼出的號碼,即班組長分機
        EvdGateway  如果監聽者電話是外線,需要指定網關,比如老板在外邊,讓班組長指定監聽某個客服的講話
      返回:
  */
  http.HandleFunc("/eavesdrop", Http_eavesdrop)
  //三方通話
  /*
    說明:三方通話
      輸入:
        EvdedPhone 被監聽的號碼
        EvdPhone   要呼出的號碼,即班組長分機
        EvdGateway 如果監聽者電話是外線,需要指定網關,比如老板在外邊,讓班組長指定監聽某個客服的講話
        DisplayNumber 監聽者顯示的號碼,一般用于內線
      返回:
  */
  http.HandleFunc("/threeway", Http_threeway)
  /*
    說明:耳語
      輸入:
        EvdedPhone  被監聽的號碼
        EvdPhone    要呼出的號碼,即班組長分機
        EvdGateway  如果監聽者電話是外線,需要指定網關,比如老板在外邊,讓班組長指定和某個客服的講話,并不被客戶聽到
      返回:
  */
  http.HandleFunc("/whisper", Http_whisper)
  /*
    說明:轉接
      輸入:
        EvdedPhone  要轉出的號碼
        EvdPhone    要被轉的號碼
        EvdGateway  如果被轉的是外線,需要指定網關
      返回:
  */
  http.HandleFunc("/transfer", Http_transfer)

  /*
    說明:放音
      輸入:
        PhoneNumber  號碼
        FilePath     路徑
        Loopplay     是否循環播放
        Channel      兩個通道是對哪個通道放音:both,都放;caller,主叫放音; callee,被叫放音
      返回:
  */
  http.HandleFunc("/playback", Http_playback)

  /*
    說明:查詢分機信息
      輸入:
        phone  號碼

      返回:
         code 200OK, 同時由 ext_info 返回用戶信息
  */
  http.HandleFunc("/extension_info", Http_extension_info)
  /*
    說明:讓ip話機接聽
      輸入:
        uuid  這一通電話的uuid通道

      返回:

  */
  http.HandleFunc("/uuid_phone_answer", Http_uuid_phone_answer)
  logger.Error(http.ListenAndServe(ipport, nil))
}

台湾佬?偷拍?娱乐?中文网