index.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <style type="text/css">
  2. .panel-body {
  3. padding-top: 0;
  4. }
  5. .middle_inline {
  6. display: inline-block;
  7. vertical-align: middle;
  8. margin-bottom: 0;
  9. }
  10. .kefu_form_control .sp_container {
  11. width: 100% !important;
  12. }
  13. </style>
  14. <div class="row animated fadeInRight">
  15. <div class="col-md-8 col-md-offset-2">
  16. <div class="box box-success">
  17. <div class="panel-heading tabbable">
  18. <ul class="nav nav-tabs" role="tablist">
  19. <li role="presentation" class="active">
  20. <a href="#tab1" aria-controls="tab1" role="tab" data-toggle="tab">常规配置</a>
  21. </li>
  22. <li role="presentation">
  23. <a href="#tab2" aria-controls="tab2" role="tab" data-toggle="tab">会话窗口</a>
  24. </li>
  25. <li role="presentation">
  26. <a href="#tab3" aria-controls="tab3" role="tab" data-toggle="tab">自动邀请</a>
  27. </li>
  28. <li role="presentation">
  29. <a href="#tab5" aria-controls="tab5" role="tab" data-toggle="tab">微信小程序</a>
  30. </li>
  31. <li role="presentation">
  32. <a href="javascript:;" class="run_config">运行配置</a>
  33. </li>
  34. </ul>
  35. </div>
  36. <div class="panel-body">
  37. <form id="update-form" role="form" data-toggle="validator" method="POST" action="{:url('kefu.config/update')}">
  38. <div class="box-body tab-content">
  39. <div role="tabpanel" class="tab-pane fade in active" id="tab1">
  40. <div class="form-group">
  41. <label for="chat_name" class="control-label">{:__('Chat name')}:</label>
  42. <input type="text" class="form-control" id="chat_name" name="row[chat_name]" value="{$config_list.chat_name|htmlentities}"/>
  43. </div>
  44. <div class="form-group">
  45. <label class="control-label">{:__('Ecs Exit')}:</label>
  46. {:build_radios('row[ecs_exit]', ['1'=>__('Ecs Exit 1'), '0'=>__('Ecs Exit 0')], $config_list.ecs_exit)}
  47. </div>
  48. <div class="form-group">
  49. <label class="control-label">{:__('Send message key')}:</label>
  50. {:build_radios('row[send_message_key]', ['1'=>__('Send message key 1'), '0'=>__('Send message key 0')], $config_list.send_message_key)}
  51. </div>
  52. <div class="form-group">
  53. <label class="control-label">{:__('Input status display')}:</label>
  54. {:build_radios('row[input_status_display]', ['0'=>__('Input status display 0'), '1'=>__('Input status display 1'), '2'=>__('Input status display 2')], $config_list.input_status_display)}
  55. </div>
  56. <div class="form-group">
  57. <label for="new_user_tip" class="control-label">{:__('New user tip')}:</label>
  58. <input type="text" class="form-control" id="new_user_tip" name="row[new_user_tip]" value="{$config_list.new_user_tip|htmlentities}"/>
  59. </div>
  60. <div class="form-group">
  61. <label for="new_user_msg" class="control-label">{:__('New user msg')}:</label>
  62. <textarea rows="3" class="form-control" id="new_user_msg" name="row[new_user_msg]" value="">{$config_list.new_user_msg|htmlentities}</textarea>
  63. <span class="help-block">自动发送给新用户的消息,客服代表的欢迎语留空时,使用此处设置的作为欢迎语</span>
  64. </div>
  65. <div class="form-group">
  66. <label class="control-label">客服分配方式:</label>
  67. {:build_radios('row[csr_distribution]', ['0' => '按工作强度', '1' => '智能分配', '2' => '轮流分配'], $config_list.csr_distribution)}
  68. <span class="help-block" id="distribution_help">
  69. {switch name="config_list.csr_distribution"}
  70. {case value="0"}按工作强度:优先分配给当前接待量最少的客服,若有多个客服接待量相同,则分配给其中最久未进行接待的客服{/case}
  71. {case value="1"}智能分配:根据接待上限和当前接待量,分配给最能接待的客服{/case}
  72. {case value="2"}轮流分配:每次都分配给最久未进行接待的客服{/case}
  73. {default /}
  74. {/switch}
  75. </span>
  76. </div>
  77. <div class="form-group">
  78. <label class="control-label">轨迹保存方案:</label>
  79. {:build_radios('row[trajectory_save_cycle]', ['0'=> '保留7天', '1'=> '保留30天', '2'=> '保留60天', '3'=> '永久保留'], $config_list.trajectory_save_cycle)}
  80. </div>
  81. <div class="form-group">
  82. <label class="control-label">知识库自动回复(总开关):</label>
  83. {:build_radios('row[kbs_switch]', ['0'=> '关闭', '1'=> '开启'], $config_list.kbs_switch)}
  84. </div>
  85. <div class="form-group">
  86. <label for="new_message_notice" class="control-label">新留言钉钉通知:</label>
  87. <textarea rows="3" class="form-control" id="new_message_notice" name="row[new_message_notice]" value="">{$config_list.new_message_notice|htmlentities}</textarea>
  88. <span class="help-block">此功能依赖插件《<a target="_blank" href="https://www.fastadmin.net/store/dinghorn.html">钉钉小喇叭</a>》,请在此处填写机器人ID,一行一个</span>
  89. </div>
  90. </div>
  91. <div role="tabpanel" class="tab-pane fade" id="tab2">
  92. <div class="form-group">
  93. <label class="control-label">收到新消息抖动窗口:</label>
  94. {:build_radios('row[new_message_shake]', ['3'=> '抖动', '2'=> '仅客服端抖动', '1'=> '仅用户端抖动', '0'=> '不抖动'], $config_list.new_message_shake)}
  95. <span class="help-block">窗口为打开状态时,才会抖动</span>
  96. </div>
  97. <div class="form-group">
  98. <label for="announcement" class="control-label">{:__('Announcement')}:</label>
  99. <textarea rows="3" class="form-control" id="announcement" name="row[announcement]" value="">{$config_list.announcement|htmlentities}</textarea>
  100. </div>
  101. <div class="form-group">
  102. <label class="control-label">{:__('Slider images')}:</label>
  103. <div class="input-group">
  104. <input id="c-slider_images" class="form-control" size="50" name="row[slider_images]" type="text" value="{$config_list.slider_images}">
  105. <div class="input-group-addon no-border no-padding">
  106. <span><button type="button" id="plupload-slider_images" class="btn btn-danger plupload" data-input-id="c-slider_images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-slider_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  107. <span><button type="button" id="fachoose-slider_images" class="btn btn-primary fachoose" data-input-id="c-slider_images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  108. </div>
  109. <span class="msg-box n-right" for="c-slider_images"></span>
  110. </div>
  111. <ul class="row list-inline plupload-preview" id="p-slider_images"></ul>
  112. </div>
  113. <div class="form-group">
  114. <label class="control-label">{:__('Chat introduces')}:</label>
  115. <textarea id="c-chat_introduces" class="form-control editor" rows="5" name="row[chat_introduces]" cols="50">{$config_list.chat_introduces|htmlentities}</textarea>
  116. </div>
  117. </div>
  118. <div role="tabpanel" class="tab-pane fade" id="tab3">
  119. <div class="form-group">
  120. <label class="control-label middle_inline">开启自动邀请:</label>
  121. <div class="middle_inline">
  122. {:Form::switcher('row[auto_invitation_switch]', $config_list.auto_invitation_switch, ['color'=>'success'])}
  123. </div>
  124. <span class="help-block">开启时,将在指定时机,为用户弹出“邀请对话”窗口</span>
  125. </div>
  126. <div class="form-group">
  127. <label class="control-label middle_inline">仅首次访问自动邀请:</label>
  128. <div class="middle_inline">
  129. {:Form::switcher('row[only_first_invitation]', $config_list.only_first_invitation, ['color'=>'success'])}
  130. </div>
  131. <span class="help-block">开启时,只在新用户首次访问时自动弹出邀请框</span>
  132. </div>
  133. <div class="form-group">
  134. <label class="control-label middle_inline">仅客服在线自动邀请:</label>
  135. <div class="middle_inline">
  136. {:Form::switcher('row[only_csr_online_invitation]', $config_list.only_csr_online_invitation, ['color'=>'success'])}
  137. </div>
  138. <span class="help-block">开启时,只在有客服在线时自动弹出邀请框</span>
  139. </div>
  140. <div class="form-group">
  141. <label for="auto_invitation_timing" class="control-label">自动邀请时机:</label>
  142. <div class="input-group">
  143. <div class="input-group-addon">停留</div>
  144. <input type="text" class="form-control" id="auto_invitation_timing" name="row[auto_invitation_timing]" value="{$config_list.auto_invitation_timing|htmlentities}"/>
  145. <div class="input-group-addon"><span class="text-warning">秒</span></div>
  146. </div>
  147. <span class="help-block">用户停留此秒数后,为用户弹出“邀请对话”窗口</span>
  148. </div>
  149. <div class="form-group">
  150. <label class="control-label">邀请框背景:</label>
  151. <div class="input-group">
  152. <input id="c-invite_box_img" class="form-control" size="50" name="row[invite_box_img]" type="text" value="{$config_list.invite_box_img}">
  153. <div class="input-group-addon no-border no-padding">
  154. <span><button type="button" id="plupload-invite_box_img" class="btn btn-danger plupload" data-input-id="c-invite_box_img" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-invite_box_img"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  155. <span><button type="button" id="fachoose-invite_box_img" class="btn btn-primary fachoose" data-input-id="c-invite_box_img" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  156. </div>
  157. <span class="msg-box n-right" for="c-invite_box_img"></span>
  158. </div>
  159. <ul class="row list-inline plupload-preview" id="p-invite_box_img"></ul>
  160. <span class="help-block">建议大小:400px*180px</span>
  161. </div>
  162. </div>
  163. <div role="tabpanel" class="tab-pane fade" id="tab5">
  164. <div class="form-group">
  165. <label for="wechat_app_id" class="control-label">小程序appId:</label>
  166. <input type="text" class="form-control" id="wechat_app_id" name="row[wechat_app_id]" value="{$config_list.wechat_app_id|htmlentities}"/>
  167. </div>
  168. <div class="form-group">
  169. <label for="wechat_app_secret" class="control-label">小程序appSecret:</label>
  170. <input type="text" class="form-control" id="wechat_app_secret" name="row[wechat_app_secret]" value="{$config_list.wechat_app_secret|htmlentities}"/>
  171. </div>
  172. <hr class="divider">
  173. <span class="help-block">
  174. 请登录小程序<a target="_blank" href="https://mp.weixin.qq.com/">MP后台</a>->开发->开发设置->消息推送->继续以下设置->请保存设置后微信端再进行验证
  175. </span>
  176. <div class="form-group">
  177. <label for="wechat_app_secret" class="control-label">服务器地址(url):</label>
  178. <input type="text" class="form-control" readonly="readonly" value="http://您的域名/api/kefu/acceptWxMsg"/>
  179. </div>
  180. <div class="form-group">
  181. <label for="wechat_token" class="control-label">通信令牌(token):</label>
  182. <input type="text" placeholder="英文或数字,3-32字符" class="form-control" id="wechat_token" name="row[wechat_token]" value="{$config_list.wechat_token|htmlentities}"/>
  183. <span class="help-block">任意填写,需与MP后台->开发->开发设置->消息推送中的Token一致</span>
  184. </div>
  185. <div class="form-group">
  186. <label for="wechat_encodingkey" class="control-label">解密密钥(EncodingAESKey):</label>
  187. <input type="text" placeholder="英文或数字,43位字符" class="form-control" id="wechat_encodingkey" name="row[wechat_encodingkey]" value="{$config_list.wechat_encodingkey|htmlentities}"/>
  188. <span class="help-block">任意填写,需与MP后台->开发->开发设置->消息推送中的EncodingAESKey一致</span>
  189. </div>
  190. <div class="form-group">
  191. <label for="wechat_app_secret" class="control-label">消息加密模式:</label>
  192. <input type="text" class="form-control" readonly="readonly" value="安全模式"/>
  193. </div>
  194. <div class="form-group">
  195. <label for="wechat_app_secret" class="control-label">数据格式:</label>
  196. <input type="text" class="form-control" readonly="readonly" value="JSON"/>
  197. </div>
  198. </div>
  199. <div class="form-group" style="margin-top: 15px;">
  200. <button type="submit" class="btn btn-success">{:__('Submit')}</button>
  201. <button type="reset" class="btn btn-default">{:__('Reset')}</button>
  202. </div>
  203. </div>
  204. </form>
  205. </div>
  206. </div>
  207. </div>
  208. </div>