public function actionPublish()
 {
     $accountId = $this->getAccountId();
     $redis = Yii::$app->cache->redis;
     $settings = $redis->get(self::SELF_SETTING_PREFIX . $accountId);
     $selfHelpDeskSetting = SelfHelpDeskSetting::findOne(['accountId' => new MongoId($accountId)]);
     if (!empty($settings)) {
         $settings = unserialize($settings);
         $settings['isPublished'] = true;
         $redis->set(self::SELF_SETTING_PREFIX . $accountId, serialize($settings));
         if (empty($selfHelpDeskSetting)) {
             $selfHelpDeskSetting = new SelfHelpDeskSetting();
         }
         $selfHelpDeskSetting['settings'] = $settings['settings'];
         $selfHelpDeskSetting['accountId'] = $settings['accountId'];
         if ($selfHelpDeskSetting->save()) {
             return ['status' => 'ok'];
         } else {
             return ['status' => 'failed'];
         }
     } else {
         if (!empty($selfHelpDeskSetting)) {
             $selfHelpDeskSetting->delete();
         }
         return ['status' => 'ok'];
     }
 }
 /**
  * Recieve message from weconnect
  *
  * <b>Request Type: </b>POST<br/>
  * <b>Content-Type: </b>application/json<br/>
  * <b>Request Endpoint: </b>http://{server-domain}/api/chat/conversation/wechat-message<br/>
  * <b>Summary: </b>This api is for recieving a message from weconnect<br/>
  *
  * <b>Request Parameters: </b><br/>
  *     message: object, the content for the message<br/>
  *         message.msgType: string, "text"<br/>
  *         message.content: mixed, the body of the content<br/>
  *     account: object, the account information<br/>
  *     user: object, the user information<br/>
  *     userId: string, the wechat user id<br/>
  *
  * <b>Response Example</b>
  * <pre>{"status":"ok"}</pre>
  */
 public function actionWechatMessage()
 {
     $message = $this->getParams('message');
     $type = $message['msgType'];
     $content = $message['content'];
     $WEConnectAccountInfo = $this->getParams('account');
     $WEConnectUserInfo = $this->getParams('user');
     $accountId = $this->getAccountId();
     $args = ['message' => $message, 'account' => $WEConnectAccountInfo, 'user' => $WEConnectUserInfo, 'accountId' => (string) $accountId];
     $redis = \Yii::$app->cache->redis;
     $modeKey = SelfHelpDeskSetting::CONVERSATION_MODE_PREFIX . $accountId . '-' . $WEConnectUserInfo['id'];
     if (SelfHelpDeskSetting::exists($accountId)) {
         // use selfHelpDesk
         $selfHelpDeskFlag = $redis->get($modeKey);
         if (empty($selfHelpDeskFlag)) {
             $selfHelpDeskFlag = 'true';
         }
         switch ($selfHelpDeskFlag) {
             case 'false':
                 break;
             default:
                 SelfHelpDeskSetting::autoReply($args);
                 return ['status' => 'ok'];
                 break;
         }
     }
     $redis->set($modeKey, 'false', 'EX', SelfHelpDeskSetting::EXPIRED_TIME);
     Yii::$app->job->create('backend\\modules\\chat\\job\\WechatMessage', $args);
     return ['status' => 'ok'];
 }
 /**
  * Get the detail information of the self helpdesk setting
  *
  * <b>Request Type: </b>GET<br/>
  * <b>Request Endpoint: </b>http://{server-domain}/api/helpdesk/setting/self-helpdesk<br/>
  * <b>Content-type: </b>Application/json<br/>
  * <b>Summary: </b>This api is for get the detail information of the self helpdesk setting.<br/>
  *
  * <b>Response Example: </b>
  * <pre>
  * {
  *     "id": "56187e882736e752058b4578",
  *     "settings": {
  *         "type": "reply",
  *         "content": "您好,很高兴为您服务,您可以输入序号查看一下内容:
  * [1] 卡片申请
  * [2] 办卡寄送进度查询
  * [3] 开卡/办卡
  * [4] 推荐亲友办卡",
  *         "menus": {
  *             "1": {
  *                 "content": "回复数字
  * 1. 绑定
  * 2. 解绑
  * 3. 返回上一级",
  *                 "type": "reply",
  *                 "menus": {
  *                     "1": {
  *                         "content": "您已绑定成功",
  *                         "type": "reply"
  *                     },
  *                     "2": {
  *                         "content": "已为您解绑",
  *                         "type": "reply"
  *                     },
  *                     "3": {
  *                         "content": "返回上一级",
  *                         "type": "back"
  *                     }
  *                 }
  *             },
  *             "2": {
  *                 "content": "回复数字
  * 1. 短信服务绑定
  * 2. 短信服务解绑
  * 3. 绑定手机重置密码
  * 4. 返回上一级",
  *                 "type": "reply",
  *                 "menus": {
  *                     "1": {
  *                         "content": "短信服务绑定成功",
  *                         "type": "reply"
  *                     },
  *                     "2": {
  *                         "content": "短信服务解绑成功",
  *                         "type": "reply"
  *                     },
  *                     "3": {
  *                         "content": "手机重置密码绑定成功",
  *                         "type": "reply"
  *                     },
  *                     "4": {
  *                         "content": "",
  *                         "type": "back"
  *                     }
  *                 }
  *             },
  *             "3": {
  *                 "content": "回复数字
  * 1. 密保绑定状态
  * 2. 密保卡使用状态
  * 3. 返回上一级",
  *                 "type": "reply",
  *                 "menus": {
  *                     "1": {
  *                         "content": "密保绑定成功",
  *                         "type": "reply"
  *                     },
  *                     "2": {
  *                         "content": "密保卡已被使用",
  *                         "type": "reply"
  *                     },
  *                     "3": {
  *                         "content": "",
  *                         "type": "back"
  *                     }
  *                 }
  *             },
  *             "4": {
  *                 "content": "",
  *                 "type": "connect",
  *                 "menus": [ ]
  *             }
  *         }
  *     }
  * }
  * </pre>
  */
 public function actionSelfHelpdesk()
 {
     $accountId = $this->getAccountId();
     if (!$accountId) {
         $accountId = $this->getQuery('cid');
     }
     if (empty($accountId)) {
         throw new BadRequestHttpException("AccountId is required");
     }
     return SelfHelpDeskSetting::findOne(['accountId' => $accountId]);
 }