pcm-agents 0.6.11 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/cjs/error-event-J_ZWIqWF.js +33 -0
  2. package/dist/cjs/error-event-J_ZWIqWF.js.map +1 -0
  3. package/dist/cjs/{index-CvEfNyEj.js → index-CRlt8Nv6.js} +53 -3
  4. package/dist/cjs/index-CRlt8Nv6.js.map +1 -0
  5. package/dist/cjs/index-WNdOTXnX.js +11068 -0
  6. package/dist/cjs/index-WNdOTXnX.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +2 -2
  8. package/dist/cjs/loader.cjs.js +3 -5
  9. package/dist/cjs/loader.cjs.js.map +1 -1
  10. package/dist/cjs/message.service-DGUsA-FY.js +135 -0
  11. package/dist/cjs/message.service-DGUsA-FY.js.map +1 -0
  12. package/dist/cjs/{pcm-1zhanshi-mnms-modal_17.cjs.entry.js → pcm-1zhanshi-mnms-modal_21.cjs.entry.js} +3276 -216
  13. package/dist/cjs/pcm-1zhanshi-mnms-modal_21.cjs.entry.js.map +1 -0
  14. package/dist/cjs/pcm-agents.cjs.js +4 -6
  15. package/dist/cjs/pcm-agents.cjs.js.map +1 -1
  16. package/dist/cjs/pcm-message.cjs.entry.js +3 -3
  17. package/dist/cjs/pcm-message.cjs.entry.js.map +1 -1
  18. package/dist/cjs/pcm-message.entry.cjs.js.map +1 -1
  19. package/dist/cjs/pcm-mnms-video-modal.cjs.entry.js +8 -8
  20. package/dist/cjs/pcm-mnms-video-modal.cjs.entry.js.map +1 -1
  21. package/dist/cjs/pcm-mnms-video-modal.entry.cjs.js.map +1 -1
  22. package/dist/cjs/pcm-mnms-zp-modal.cjs.entry.js +29 -86
  23. package/dist/cjs/pcm-mnms-zp-modal.cjs.entry.js.map +1 -1
  24. package/dist/cjs/pcm-mnms-zp-modal.entry.cjs.js.map +1 -1
  25. package/dist/cjs/{sentry-reporter-BWFtw_aT.js → sentry-reporter-tpI4WdkE.js} +12 -40
  26. package/dist/cjs/sentry-reporter-tpI4WdkE.js.map +1 -0
  27. package/dist/collection/collection-manifest.json +5 -1
  28. package/dist/collection/components/pcm-1zhanshi-mnms-modal/pcm-1zhanshi-mnms-modal.js.map +1 -1
  29. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.css +986 -986
  30. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js +7 -9
  31. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js.map +1 -1
  32. package/dist/collection/components/pcm-button/pcm-button.css +199 -199
  33. package/dist/collection/components/pcm-button/pcm-button.js +6 -6
  34. package/dist/collection/components/pcm-button/pcm-button.js.map +1 -1
  35. package/dist/collection/components/pcm-card/pcm-card.css +259 -259
  36. package/dist/collection/components/pcm-card/pcm-card.js +1 -1
  37. package/dist/collection/components/pcm-card/pcm-card.js.map +1 -1
  38. package/dist/collection/components/pcm-chat-message/pcm-chat-message.css +554 -554
  39. package/dist/collection/components/pcm-chat-message/pcm-chat-message.js +3 -3
  40. package/dist/collection/components/pcm-chat-message/pcm-chat-message.js.map +1 -1
  41. package/dist/collection/components/pcm-drawer/pcm-drawer.css +102 -102
  42. package/dist/collection/components/pcm-drawer/pcm-drawer.js +1 -1
  43. package/dist/collection/components/pcm-drawer/pcm-drawer.js.map +1 -1
  44. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.css +854 -854
  45. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js +5 -7
  46. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js.map +1 -1
  47. package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.css +95 -95
  48. package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.js +1 -1
  49. package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.js.map +1 -1
  50. package/dist/collection/components/pcm-hyzj-modal/pcm-hyzj-modal.js +2 -2
  51. package/dist/collection/components/pcm-hyzj-modal/pcm-hyzj-modal.js.map +1 -1
  52. package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.css +312 -312
  53. package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.js +1 -1
  54. package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.js.map +1 -1
  55. package/dist/collection/components/pcm-jlpp-modal/pcm-jlpp-modal.js +2 -2
  56. package/dist/collection/components/pcm-jlpp-modal/pcm-jlpp-modal.js.map +1 -1
  57. package/dist/collection/components/pcm-message/pcm-message.css +64 -64
  58. package/dist/collection/components/pcm-message/pcm-message.js +2 -2
  59. package/dist/collection/components/pcm-message/pcm-message.js.map +1 -1
  60. package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.css +1 -1
  61. package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.js +2 -2
  62. package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.js.map +1 -1
  63. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js +67 -84
  64. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js.map +1 -1
  65. package/dist/collection/components/pcm-mnms-video-modal/pcm-mnms-video-modal.js +2 -2
  66. package/dist/collection/components/pcm-mnms-video-modal/pcm-mnms-video-modal.js.map +1 -1
  67. package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js +67 -84
  68. package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js.map +1 -1
  69. package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.css +140 -0
  70. package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.js +307 -0
  71. package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.js.map +1 -0
  72. package/dist/collection/components/pcm-mobile-input-btn/uploadNumberSDK.js +25 -0
  73. package/dist/collection/components/pcm-mobile-input-btn/uploadNumberSDK.js.map +1 -0
  74. package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.css +127 -0
  75. package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.js +350 -0
  76. package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.js.map +1 -0
  77. package/dist/collection/components/pcm-mobile-upload-btn/uploadNumberSDK.js +25 -0
  78. package/dist/collection/components/pcm-mobile-upload-btn/uploadNumberSDK.js.map +1 -0
  79. package/dist/collection/components/pcm-msbg-modal/pcm-msbg-modal.js +2 -2
  80. package/dist/collection/components/pcm-msbg-modal/pcm-msbg-modal.js.map +1 -1
  81. package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.css +1 -1
  82. package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.js +2 -2
  83. package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.js.map +1 -1
  84. package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.css +0 -0
  85. package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.js +106 -0
  86. package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.js.map +1 -0
  87. package/dist/collection/components/pcm-upload/pcm-upload.css +0 -0
  88. package/dist/collection/components/pcm-upload/pcm-upload.js +408 -0
  89. package/dist/collection/components/pcm-upload/pcm-upload.js.map +1 -0
  90. package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.css +969 -969
  91. package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.js +3 -5
  92. package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.js.map +1 -1
  93. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.css +68 -68
  94. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js +4 -4
  95. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js.map +1 -1
  96. package/dist/collection/global/global.css +401 -398
  97. package/dist/collection/global/markdown.css +1233 -1233
  98. package/dist/collection/global/message.js.map +1 -1
  99. package/dist/collection/index.js.map +1 -1
  100. package/dist/collection/interfaces/chat.js.map +1 -1
  101. package/dist/collection/interfaces/events.js.map +1 -1
  102. package/dist/collection/services/message.service.js.map +1 -1
  103. package/dist/collection/utils/env.js +3 -0
  104. package/dist/collection/utils/env.js.map +1 -1
  105. package/dist/collection/utils/error-event.js.map +1 -1
  106. package/dist/collection/utils/init.js.map +1 -1
  107. package/dist/collection/utils/sentry-reporter.js.map +1 -1
  108. package/dist/collection/utils/utils.js +48 -24
  109. package/dist/collection/utils/utils.js.map +1 -1
  110. package/dist/components/index.js +3 -5482
  111. package/dist/components/index.js.map +1 -1
  112. package/dist/components/{p-AYWZDCn8.js → p-B0WOTw9J.js} +51 -4
  113. package/dist/components/p-B0WOTw9J.js.map +1 -0
  114. package/dist/components/{p-DUQ46MUh.js → p-BGXbWUJg.js} +3 -3
  115. package/dist/components/{p-DUQ46MUh.js.map → p-BGXbWUJg.js.map} +1 -1
  116. package/dist/{esm/sentry-reporter-BFBS363a.js → components/p-BW3r6Lrf.js} +5 -32
  117. package/dist/components/p-BW3r6Lrf.js.map +1 -0
  118. package/dist/{esm/app-globals-Chti62re.js → components/p-BdiUKin5.js} +9619 -4296
  119. package/dist/components/p-BdiUKin5.js.map +1 -0
  120. package/dist/components/{p-FjtoYPVY.js → p-BywzltXy.js} +10 -9
  121. package/dist/components/p-BywzltXy.js.map +1 -0
  122. package/dist/components/p-C2OsjtRx.js +208 -0
  123. package/dist/components/p-C2OsjtRx.js.map +1 -0
  124. package/dist/components/{p-D2Z8casl.js → p-CuIvbaWY.js} +5 -5
  125. package/dist/components/p-CuIvbaWY.js.map +1 -0
  126. package/dist/components/p-D0ZMoyH8.js +251 -0
  127. package/dist/components/p-D0ZMoyH8.js.map +1 -0
  128. package/dist/components/{p-CjbFHLT7.js → p-De3VHEUn.js} +7 -71
  129. package/dist/components/p-De3VHEUn.js.map +1 -0
  130. package/dist/components/p-Dv8qvK0w.js +2646 -0
  131. package/dist/components/p-Dv8qvK0w.js.map +1 -0
  132. package/dist/components/p-RD3mwuBX.js +226 -0
  133. package/dist/components/p-RD3mwuBX.js.map +1 -0
  134. package/dist/components/p-njngFX_n.js +80 -0
  135. package/dist/components/p-njngFX_n.js.map +1 -0
  136. package/dist/components/pcm-1zhanshi-mnms-modal.js +7 -7
  137. package/dist/components/pcm-1zhanshi-mnms-modal.js.map +1 -1
  138. package/dist/components/pcm-app-chat-modal.js +1 -1
  139. package/dist/components/pcm-button.js +2 -2
  140. package/dist/components/pcm-button.js.map +1 -1
  141. package/dist/components/pcm-card.js +3 -3
  142. package/dist/components/pcm-card.js.map +1 -1
  143. package/dist/components/pcm-chat-message.js +1 -1
  144. package/dist/components/pcm-drawer.js +1 -1
  145. package/dist/components/pcm-hr-chat-modal.js +5 -4
  146. package/dist/components/pcm-hr-chat-modal.js.map +1 -1
  147. package/dist/components/pcm-htws-modal.js +8 -7
  148. package/dist/components/pcm-htws-modal.js.map +1 -1
  149. package/dist/components/pcm-hyzj-modal.js +8 -7
  150. package/dist/components/pcm-hyzj-modal.js.map +1 -1
  151. package/dist/components/pcm-jd-modal.js +8 -7
  152. package/dist/components/pcm-jd-modal.js.map +1 -1
  153. package/dist/components/pcm-jlpp-modal.js +8 -7
  154. package/dist/components/pcm-jlpp-modal.js.map +1 -1
  155. package/dist/components/pcm-message.js +3 -3
  156. package/dist/components/pcm-message.js.map +1 -1
  157. package/dist/components/pcm-mnct-modal.js +8 -7
  158. package/dist/components/pcm-mnct-modal.js.map +1 -1
  159. package/dist/components/pcm-mnms-modal.js +60 -90
  160. package/dist/components/pcm-mnms-modal.js.map +1 -1
  161. package/dist/components/pcm-mnms-video-modal.js +8 -7
  162. package/dist/components/pcm-mnms-video-modal.js.map +1 -1
  163. package/dist/components/pcm-mnms-zp-modal.js +60 -90
  164. package/dist/components/pcm-mnms-zp-modal.js.map +1 -1
  165. package/dist/components/pcm-mobile-input-btn.d.ts +11 -0
  166. package/dist/components/pcm-mobile-input-btn.js +9 -0
  167. package/dist/components/pcm-mobile-input-btn.js.map +1 -0
  168. package/dist/components/pcm-mobile-upload-btn.d.ts +11 -0
  169. package/dist/components/pcm-mobile-upload-btn.js +9 -0
  170. package/dist/components/pcm-mobile-upload-btn.js.map +1 -0
  171. package/dist/components/pcm-msbg-modal.js +8 -7
  172. package/dist/components/pcm-msbg-modal.js.map +1 -1
  173. package/dist/components/pcm-qgqjl-modal.js +8 -7
  174. package/dist/components/pcm-qgqjl-modal.js.map +1 -1
  175. package/dist/components/pcm-time-count-down.d.ts +11 -0
  176. package/dist/components/pcm-time-count-down.js +9 -0
  177. package/dist/components/pcm-time-count-down.js.map +1 -0
  178. package/dist/components/pcm-upload.d.ts +11 -0
  179. package/dist/components/pcm-upload.js +9 -0
  180. package/dist/components/pcm-upload.js.map +1 -0
  181. package/dist/components/pcm-zsk-chat-modal.js +4 -4
  182. package/dist/components/pcm-zsk-chat-modal.js.map +1 -1
  183. package/dist/components/pcm-zygh-modal.js +8 -7
  184. package/dist/components/pcm-zygh-modal.js.map +1 -1
  185. package/dist/esm/error-event-C0FYX2-Z.js +31 -0
  186. package/dist/esm/error-event-C0FYX2-Z.js.map +1 -0
  187. package/dist/esm/{index-GyOE8SlD.js → index-BnNqOUZf.js} +51 -4
  188. package/dist/esm/index-BnNqOUZf.js.map +1 -0
  189. package/dist/esm/index-BuVfV0zo.js +11035 -0
  190. package/dist/esm/index-BuVfV0zo.js.map +1 -0
  191. package/dist/esm/index.js +2 -2
  192. package/dist/esm/loader.js +3 -5
  193. package/dist/esm/loader.js.map +1 -1
  194. package/dist/esm/message.service-DXVhHj6-.js +133 -0
  195. package/dist/esm/message.service-DXVhHj6-.js.map +1 -0
  196. package/dist/esm/{pcm-1zhanshi-mnms-modal_17.entry.js → pcm-1zhanshi-mnms-modal_21.entry.js} +3225 -169
  197. package/dist/esm/pcm-1zhanshi-mnms-modal_21.entry.js.map +1 -0
  198. package/dist/esm/pcm-agents.js +4 -6
  199. package/dist/esm/pcm-agents.js.map +1 -1
  200. package/dist/esm/pcm-message.entry.js +3 -3
  201. package/dist/esm/pcm-message.entry.js.map +1 -1
  202. package/dist/esm/pcm-mnms-video-modal.entry.js +5 -5
  203. package/dist/esm/pcm-mnms-video-modal.entry.js.map +1 -1
  204. package/dist/esm/pcm-mnms-zp-modal.entry.js +28 -85
  205. package/dist/esm/pcm-mnms-zp-modal.entry.js.map +1 -1
  206. package/dist/esm/sentry-reporter-CYzy4_8O.js +70 -0
  207. package/dist/esm/sentry-reporter-CYzy4_8O.js.map +1 -0
  208. package/dist/pcm-agents/index.esm.js +1 -1
  209. package/dist/pcm-agents/loader.esm.js.map +1 -1
  210. package/dist/pcm-agents/p-18a06873.entry.js +2 -0
  211. package/dist/pcm-agents/p-18a06873.entry.js.map +1 -0
  212. package/dist/pcm-agents/p-47e2e1d0.entry.js +2 -0
  213. package/dist/pcm-agents/p-47e2e1d0.entry.js.map +1 -0
  214. package/dist/pcm-agents/{p-3608c0c6.entry.js → p-7a582f00.entry.js} +2 -2
  215. package/dist/pcm-agents/p-7a582f00.entry.js.map +1 -0
  216. package/dist/pcm-agents/p-BhFnI70g.js +2 -0
  217. package/dist/pcm-agents/p-BhFnI70g.js.map +1 -0
  218. package/dist/pcm-agents/p-BuVfV0zo.js +3 -0
  219. package/dist/pcm-agents/p-BuVfV0zo.js.map +1 -0
  220. package/dist/pcm-agents/p-C0FYX2-Z.js +2 -0
  221. package/dist/pcm-agents/p-C0FYX2-Z.js.map +1 -0
  222. package/dist/pcm-agents/p-DXVhHj6-.js +2 -0
  223. package/dist/pcm-agents/p-DXVhHj6-.js.map +1 -0
  224. package/dist/pcm-agents/p-DkeaAFic.js +2 -0
  225. package/dist/pcm-agents/p-DkeaAFic.js.map +1 -0
  226. package/dist/pcm-agents/p-f5f96853.entry.js +245 -0
  227. package/dist/pcm-agents/p-f5f96853.entry.js.map +1 -0
  228. package/dist/pcm-agents/pcm-agents.esm.js +1 -1
  229. package/dist/pcm-agents/pcm-agents.esm.js.map +1 -1
  230. package/dist/pcm-agents/pcm-message.entry.esm.js.map +1 -1
  231. package/dist/pcm-agents/pcm-mnms-video-modal.entry.esm.js.map +1 -1
  232. package/dist/pcm-agents/pcm-mnms-zp-modal.entry.esm.js.map +1 -1
  233. package/dist/store/auth.store.js.map +1 -1
  234. package/dist/store/config.store.js.map +1 -1
  235. package/dist/types/components/pcm-mnms-modal/pcm-mnms-modal.d.ts +9 -4
  236. package/dist/types/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.d.ts +9 -4
  237. package/dist/types/components/pcm-mobile-input-btn/pcm-mobile-input-btn.d.ts +36 -0
  238. package/dist/types/components/pcm-mobile-input-btn/uploadNumberSDK.d.ts +9 -0
  239. package/dist/types/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.d.ts +44 -0
  240. package/dist/types/components/pcm-mobile-upload-btn/uploadNumberSDK.d.ts +9 -0
  241. package/dist/types/components/pcm-time-count-down/pcm-time-count-down.d.ts +15 -0
  242. package/dist/types/components/pcm-upload/pcm-upload.d.ts +54 -0
  243. package/dist/types/components/pcm-upload/type.d.ts +4 -0
  244. package/dist/types/components.d.ts +798 -30
  245. package/dist/types/stencil-public-runtime.d.ts +1 -1
  246. package/dist/types/utils/env.d.ts +2 -0
  247. package/dist/types/utils/utils.d.ts +30 -12
  248. package/package.json +70 -69
  249. package/dist/cjs/app-globals-BIO4q6tX.js +0 -5487
  250. package/dist/cjs/app-globals-BIO4q6tX.js.map +0 -1
  251. package/dist/cjs/exports-Dc-pQh4A.js +0 -4087
  252. package/dist/cjs/exports-Dc-pQh4A.js.map +0 -1
  253. package/dist/cjs/index-C_qhED9Z.js +0 -1538
  254. package/dist/cjs/index-C_qhED9Z.js.map +0 -1
  255. package/dist/cjs/index-CvEfNyEj.js.map +0 -1
  256. package/dist/cjs/pcm-1zhanshi-mnms-modal_17.cjs.entry.js.map +0 -1
  257. package/dist/cjs/sentry-reporter-BWFtw_aT.js.map +0 -1
  258. package/dist/components/p-75J0r72D.js +0 -4017
  259. package/dist/components/p-75J0r72D.js.map +0 -1
  260. package/dist/components/p-AYWZDCn8.js.map +0 -1
  261. package/dist/components/p-CR7WLzmM.js +0 -1303
  262. package/dist/components/p-CR7WLzmM.js.map +0 -1
  263. package/dist/components/p-CjbFHLT7.js.map +0 -1
  264. package/dist/components/p-D2Z8casl.js.map +0 -1
  265. package/dist/components/p-FjtoYPVY.js.map +0 -1
  266. package/dist/esm/app-globals-Chti62re.js.map +0 -1
  267. package/dist/esm/exports-Bs-zO1WZ.js +0 -4017
  268. package/dist/esm/exports-Bs-zO1WZ.js.map +0 -1
  269. package/dist/esm/index-Bq0K-WqZ.js +0 -1528
  270. package/dist/esm/index-Bq0K-WqZ.js.map +0 -1
  271. package/dist/esm/index-GyOE8SlD.js.map +0 -1
  272. package/dist/esm/pcm-1zhanshi-mnms-modal_17.entry.js.map +0 -1
  273. package/dist/esm/sentry-reporter-BFBS363a.js.map +0 -1
  274. package/dist/pcm-agents/p-2Gpw8rvH.js +0 -2
  275. package/dist/pcm-agents/p-2Gpw8rvH.js.map +0 -1
  276. package/dist/pcm-agents/p-3608c0c6.entry.js.map +0 -1
  277. package/dist/pcm-agents/p-60d7a0b0.entry.js +0 -2
  278. package/dist/pcm-agents/p-60d7a0b0.entry.js.map +0 -1
  279. package/dist/pcm-agents/p-9e6efc2d.entry.js +0 -2
  280. package/dist/pcm-agents/p-9e6efc2d.entry.js.map +0 -1
  281. package/dist/pcm-agents/p-BUV0S8Cc.js +0 -2
  282. package/dist/pcm-agents/p-BUV0S8Cc.js.map +0 -1
  283. package/dist/pcm-agents/p-Bq0K-WqZ.js +0 -3
  284. package/dist/pcm-agents/p-Bq0K-WqZ.js.map +0 -1
  285. package/dist/pcm-agents/p-Bs-zO1WZ.js +0 -2
  286. package/dist/pcm-agents/p-Bs-zO1WZ.js.map +0 -1
  287. package/dist/pcm-agents/p-CeRTfvY9.js +0 -2
  288. package/dist/pcm-agents/p-CeRTfvY9.js.map +0 -1
  289. package/dist/pcm-agents/p-e6c87a78.entry.js +0 -2
  290. package/dist/pcm-agents/p-e6c87a78.entry.js.map +0 -1
  291. /package/dist/types/{code/agents-sdk → Users/debugksir/Documents/pcm/sdk}/packages/pcm-agents/.stencil/store/auth.store.d.ts +0 -0
  292. /package/dist/types/{code/agents-sdk → Users/debugksir/Documents/pcm/sdk}/packages/pcm-agents/.stencil/store/config.store.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { h } from "@stencil/core";
2
- import { convertWorkflowStreamNodeToMessageRound, sendSSERequest, sendHttpRequest, uploadFileToBackend, verifyApiKey } from "../../utils/utils";
2
+ import { sendSSERequest, sendHttpRequest, uploadFileToBackend, verifyApiKey } from "../../utils/utils";
3
3
  import { authStore } from "../../../store/auth.store";
4
4
  import { configStore } from "../../../store/config.store";
5
5
  export class ChatKBModal {
@@ -291,8 +291,6 @@ export class ChatKBModal {
291
291
  this.currentRefs = Array.from(uniqueRefs.values());
292
292
  }
293
293
  if (data.event === 'message') {
294
- const inputMessage = { message: message };
295
- convertWorkflowStreamNodeToMessageRound('message', inputMessage, data);
296
294
  if (data.event === 'agent_message' || data.event === 'message') {
297
295
  if (data.answer) {
298
296
  answer += data.answer;
@@ -1104,11 +1102,11 @@ export class ChatKBModal {
1104
1102
  "optional": false,
1105
1103
  "docs": {
1106
1104
  "tags": [],
1107
- "text": "\u81EA\u5B9A\u4E49\u667A\u80FD\u4F53inputs\u8F93\u5165\u53C2\u6570:<br>\r\n1. show_suggested_questions: \u662F\u5426\u663E\u793A\u63A8\u8350\u95EE\u9898<br>"
1105
+ "text": "\u81EA\u5B9A\u4E49\u667A\u80FD\u4F53inputs\u8F93\u5165\u53C2\u6570:<br>\n1. show_suggested_questions: \u662F\u5426\u663E\u793A\u63A8\u8350\u95EE\u9898<br>"
1108
1106
  },
1109
1107
  "getter": false,
1110
1108
  "setter": false,
1111
- "defaultValue": "{\r\n show_suggested_questions: 'false',\r\n }"
1109
+ "defaultValue": "{\n show_suggested_questions: 'false',\n }"
1112
1110
  },
1113
1111
  "employeeId": {
1114
1112
  "type": "string",
@@ -1 +1 @@
1
- {"version":3,"file":"pcm-zsk-chat-modal.js","sourceRoot":"","sources":["../../../../src/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, State, Event, EventEmitter, Element, Watch } from '@stencil/core';\r\nimport { convertWorkflowStreamNodeToMessageRound, UserInputMessageType, sendSSERequest, sendHttpRequest, uploadFileToBackend, verifyApiKey } from '../../utils/utils';\r\nimport { ChatMessage } from '../../interfaces/chat';\r\nimport { ConversationStartEventData, StreamCompleteEventData } from '../../components';\r\nimport { authStore } from '../../../store/auth.store';\r\nimport { configStore } from '../../../store/config.store';\r\n\r\n/**\r\n * 知识库问答助手\r\n */\r\n\r\n\r\n// 添加引用文档接口\r\ninterface Reference {\r\n doc_info: {\r\n doc_name: string;\r\n doc_id: string;\r\n };\r\n content: string;\r\n}\r\n\r\n// 添加智能体详情接口\r\ninterface EmployeeDetails {\r\n id: number;\r\n name: string;\r\n description: string;\r\n avatar: string;\r\n default_greeting: string;\r\n quick_questions: string;\r\n user_id: number;\r\n created_at: string;\r\n updated_at: string;\r\n is_active: boolean;\r\n dify_app_key: string | null;\r\n last_conversation_id: string | null;\r\n workflow_id: string;\r\n agent_name: string;\r\n show_quote_doc?: boolean;\r\n}\r\n\r\n@Component({\r\n tag: 'pcm-zsk-chat-modal',\r\n styleUrl: 'pcm-zsk-chat-modal.css',\r\n shadow: true,\r\n})\r\nexport class ChatKBModal {\r\n /**\r\n * 模态框标题\r\n */\r\n @Prop() modalTitle?: string;\r\n\r\n /**\r\n * SDK鉴权密钥\r\n */\r\n @Prop({ attribute: 'token' }) token!: string;\r\n\r\n /**\r\n * 是否显示聊天模态框\r\n */\r\n @Prop({ mutable: true }) isOpen: boolean = false;\r\n\r\n /**\r\n * 聊天消息历史\r\n */\r\n @State() messages: ChatMessage[] = [];\r\n\r\n /**\r\n * 当点击模态框关闭时触发\r\n */\r\n @Event() modalClosed: EventEmitter<void>;\r\n\r\n /**\r\n * 应用图标URL,如果未设置则使用智能体头像\r\n */\r\n @Prop() icon?: string;\r\n\r\n /**\r\n * 聊天框的页面层级\r\n */\r\n @Prop() zIndex?: number = 1000;\r\n\r\n /**\r\n * 是否展示顶部标题栏\r\n */\r\n @Prop() isShowHeader: boolean = true;\r\n\r\n /**\r\n * 是否展示右上角的关闭按钮\r\n */\r\n @Prop() isNeedClose: boolean = true;\r\n\r\n\r\n /**\r\n * 会话ID,传入继续对话,否则创建新会话\r\n */\r\n @Prop({ mutable: true }) conversationId?: string;\r\n\r\n /**\r\n * 当前助手回复的消息\r\n */\r\n @State() currentAssistantMessage: string = '';\r\n\r\n /**\r\n * 是否正在加载回复\r\n */\r\n @State() isLoading: boolean = false;\r\n\r\n /**\r\n * 当前正在流式输出的消息\r\n */\r\n @State() currentStreamingMessage: ChatMessage | null = null;\r\n\r\n // 添加新的状态控制\r\n @State() shouldAutoScroll: boolean = true;\r\n\r\n @State() isLoadingHistory: boolean = false;\r\n\r\n // 使用 @Element 装饰器获取组件的 host 元素\r\n @Element() hostElement: HTMLElement;\r\n\r\n /**\r\n * 一轮对话结束时的回调\r\n */\r\n @Event() streamComplete: EventEmitter<StreamCompleteEventData>;\r\n\r\n /**\r\n * 新会话开始的回调,只会在一轮对话开始时触发一次\r\n */\r\n @Event() conversationStart: EventEmitter<ConversationStartEventData>;;\r\n\r\n\r\n /**\r\n * SDK密钥验证失败事件\r\n */\r\n @Event() tokenInvalid: EventEmitter<void>;\r\n\r\n\r\n private readonly SCROLL_THRESHOLD = 20;\r\n\r\n /**\r\n * 是否以全屏模式打开,移动端建议设置为true\r\n */\r\n @Prop() fullscreen: boolean = false;\r\n\r\n // 添加文字输入相关状态\r\n @State() textAnswer: string = '';\r\n @State() isSubmittingText: boolean = false;\r\n\r\n /**\r\n * 自定义智能体inputs输入参数:<br>\r\n * 1. show_suggested_questions: 是否显示推荐问题<br>\r\n */\r\n @Prop() customInputs: Record<string, string> = {\r\n show_suggested_questions: 'false',\r\n };\r\n\r\n // 添加推荐问题和引用文档状态\r\n @State() suggestedQuestions: string[] = [];\r\n @State() suggestedQuestionsLoading: boolean = false;\r\n @State() currentRefs: Reference[] = [];\r\n\r\n /**\r\n * 是否显示引用文档(总开关)\r\n */\r\n @State() showReferences: boolean = false;\r\n\r\n\r\n /**\r\n * 数字员工ID,从聘才猫开发平台创建数字员工后,点击导出获取\r\n */\r\n @Prop() employeeId!: string;\r\n\r\n\r\n // 添加语音输入相关状态\r\n @State() isRecordingAudio: boolean = false;\r\n @State() audioRecorder: MediaRecorder | null = null;\r\n @State() audioChunks: BlobPart[] = [];\r\n @State() isConvertingAudio: boolean = false;\r\n @State() audioRecordingTimeLeft: number = 60; // 最大录音时间(秒)\r\n @State() audioRecordingTimer: any = null;\r\n @State() audioRecordingStartTime: number = 0;\r\n\r\n /**\r\n * 语音录制最大时长(秒)\r\n */\r\n @Prop() maxAudioRecordingTime: number = 60;\r\n\r\n /**\r\n * 智能体详情\r\n */\r\n @State() employeeDetails: EmployeeDetails | null = null;\r\n\r\n /**\r\n * 是否正在加载智能体详情\r\n */\r\n @State() isLoadingEmployeeDetails: boolean = false;\r\n\r\n /**\r\n * 预设问题列表\r\n */\r\n @State() quickQuestions: string[] = [];\r\n\r\n private tokenInvalidListener: () => void;\r\n\r\n /**\r\n * 当点击清除对话记录按钮时触发\r\n */\r\n @Event() clearConversation: EventEmitter<string>;\r\n\r\n // 是否应该隐藏引用文档(每次对话是否隐藏引用文档)\r\n @State() shouldHideReferences: boolean = false;\r\n\r\n // 添加新的状态来追踪用户交互\r\n @State() isUserScrolling: boolean = false;\r\n\r\n @Watch('token')\r\n handleTokenChange(newToken: string) {\r\n // 当传入的 token 变化时,更新 authStore 中的 token\r\n if (newToken && newToken !== authStore.getToken()) {\r\n authStore.setToken(newToken);\r\n }\r\n }\r\n\r\n\r\n componentWillLoad() {\r\n\r\n // 将 zIndex 存入配置缓存\r\n if (this.zIndex) {\r\n configStore.setItem('modal-zIndex', this.zIndex);\r\n }\r\n if (this.token) {\r\n authStore.setToken(this.token);\r\n }\r\n\r\n // 添加全局token无效事件监听器\r\n this.tokenInvalidListener = () => {\r\n this.tokenInvalid.emit();\r\n };\r\n document.addEventListener('pcm-token-invalid', this.tokenInvalidListener);\r\n }\r\n\r\n\r\n private handleClose = () => {\r\n this.modalClosed.emit();\r\n };\r\n\r\n\r\n private async sendMessageToAPI(message: string) {\r\n // 验证 employeeId 是否存在\r\n if (!this.employeeId) {\r\n alert('请提供有效的数字员工ID');\r\n return;\r\n }\r\n\r\n this.isLoading = true;\r\n let answer = '';\r\n\r\n const now = new Date();\r\n const time = `${now.getHours()}:${now.getMinutes().toString().padStart(2, '0')}`;\r\n\r\n // 修改消息处理逻辑,移除文件上传相关代码\r\n const queryText = message.trim() || '请开始';\r\n\r\n // 重置推荐问题和引用文档\r\n this.suggestedQuestions = [];\r\n this.currentRefs = [];\r\n\r\n // 重置引用文档显示状态\r\n this.shouldHideReferences = false;\r\n\r\n // 创建新的消息对象\r\n const newMessage: ChatMessage = {\r\n id: `temp-${Date.now()}`, // 临时ID,将被服务器返回的ID替换\r\n conversation_id: this.conversationId, // 会话ID\r\n parent_message_id: \"00000000-0000-0000-0000-000000000000\", // 默认父消息ID\r\n inputs: this.customInputs || {}, // 使用解析后的输入参数\r\n query: queryText, // 用户输入的消息内容\r\n answer: '', // 初始为空\r\n message_files: [], // 消息附件\r\n feedback: {}, // 反馈\r\n retriever_resources: [], // 检索资源\r\n created_at: Math.floor(Date.now() / 1000).toString(), // 创建时间\r\n agent_thoughts: [], // 代理思考过程\r\n status: \"normal\", // 消息状态\r\n error: null, // 错误信息\r\n // 添加组件内部使用的字段\r\n time: time, // 消息时间(显示用)\r\n isStreaming: true // 是否正在流式输出\r\n };\r\n\r\n // 设置当前流式消息\r\n this.currentStreamingMessage = newMessage;\r\n\r\n this.shouldAutoScroll = true;\r\n // 滚动到底部\r\n this.scrollToBottom();\r\n\r\n // 准备请求数据\r\n const requestData: any = {\r\n response_mode: 'streaming',\r\n conversation_id: this.conversationId,\r\n query: queryText,\r\n employee_id: this.employeeId,\r\n };\r\n\r\n // 合并基本输入参数和自定义输入参数\r\n requestData.inputs = {\r\n // 合并自定义输入参数\r\n ...this.customInputs,\r\n };\r\n\r\n await sendSSERequest({\r\n url: `/sdk/v1/knowledge/chat/chat-messages`,\r\n method: 'POST',\r\n data: requestData,\r\n onMessage: (data) => {\r\n console.log('收到Stream数据:', data);\r\n\r\n if (data.conversation_id && !this.conversationId) {\r\n this.conversationId = data.conversation_id;\r\n this.conversationStart.emit({\r\n conversation_id: data.conversation_id,\r\n event: data.event,\r\n message_id: data.message_id,\r\n id: data.id,\r\n });\r\n }\r\n\r\n // 处理问题建议\r\n if (data.event === 'node_started' && data.data.title.includes('聘才猫推荐开始')) {\r\n this.suggestedQuestionsLoading = true;\r\n }\r\n\r\n // 添加对\"不显示引用\"的检测\r\n if (data.event === 'node_started' && data.data.title.includes('不显示引用')) {\r\n this.shouldHideReferences = true;\r\n }\r\n\r\n // 处理问题建议\r\n if (data.event === 'node_finished' && data.data.title.includes('聘才猫推荐结束')) {\r\n let suggestions: string[] = [];\r\n\r\n try {\r\n // 清理 markdown 代码块标记并解析 JSON\r\n let textContent = data.data.outputs.text;\r\n if (typeof textContent === 'string') {\r\n // 移除 markdown 代码块标记\r\n textContent = textContent.replace(/```json\\n/, '').replace(/```/, '').trim();\r\n const suggestionData = JSON.parse(textContent);\r\n\r\n // 处理标准格式的建议问题\r\n if (suggestionData.status === 'success' && Array.isArray(suggestionData.items)) {\r\n suggestions = suggestionData.items.map((item: any) => item.question);\r\n }\r\n } else {\r\n // 如果已经是对象,直接使用\r\n const suggestionData = textContent;\r\n if (suggestionData.status === 'success' && Array.isArray(suggestionData.items)) {\r\n suggestions = suggestionData.items.map((item: any) => item.question);\r\n }\r\n }\r\n } catch (e) {\r\n console.warn('解析问题建议失败:', e);\r\n }\r\n\r\n this.suggestedQuestions = suggestions;\r\n this.suggestedQuestionsLoading = false;\r\n }\r\n\r\n // 处理引用文档\r\n if (data.event === 'node_finished' && data.data?.inputs?.documents) {\r\n const refs: Reference[] = [];\r\n\r\n // 遍历 documents 数组\r\n data.data.inputs.documents.forEach((arg: any) => {\r\n // 遍历每个 arg 中的 result_list\r\n if (arg.result_list && Array.isArray(arg.result_list)) {\r\n arg.result_list.forEach((result: any) => {\r\n if (result.doc_info && result.content) {\r\n refs.push({\r\n doc_info: {\r\n doc_name: result.doc_info.doc_name,\r\n doc_id: result.doc_info.doc_id\r\n },\r\n content: result.content\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n // 去重处理\r\n const uniqueRefs = new Map();\r\n refs.forEach((ref: Reference) => {\r\n if (ref.doc_info && ref.doc_info.doc_id) {\r\n uniqueRefs.set(ref.doc_info.doc_id, ref);\r\n }\r\n });\r\n\r\n this.currentRefs = Array.from(uniqueRefs.values());\r\n }\r\n\r\n if (data.event === 'message') {\r\n const inputMessage: UserInputMessageType = { message: message };\r\n convertWorkflowStreamNodeToMessageRound('message', inputMessage, data);\r\n\r\n if (data.event === 'agent_message' || data.event === 'message') {\r\n if (data.answer) {\r\n answer += data.answer;\r\n // 更新消息时保持完整的消息结构\r\n const updatedMessage: ChatMessage = {\r\n ...this.currentStreamingMessage,\r\n answer,\r\n id: data.message_id || this.currentStreamingMessage.id,\r\n isStreaming: true,\r\n // 如果服务器返回了其他字段,也更新它们\r\n parent_message_id: data.parent_message_id || this.currentStreamingMessage.parent_message_id,\r\n retriever_resources: data.retriever_resources || this.currentStreamingMessage.retriever_resources,\r\n agent_thoughts: data.agent_thoughts || this.currentStreamingMessage.agent_thoughts\r\n };\r\n this.currentStreamingMessage = updatedMessage;\r\n this.scrollToBottom();\r\n }\r\n }\r\n }\r\n if (data.event === \"message_end\") {\r\n this.streamComplete.emit({\r\n conversation_id: data.conversation_id || '',\r\n event: data.event,\r\n message_id: data.message_id,\r\n id: data.id,\r\n });\r\n }\r\n },\r\n onError: (error) => {\r\n console.error('发生错误:', error);\r\n alert(error instanceof Error ? error.message : '消息发送失败,请稍后再试');\r\n this.messages = [...this.messages, {\r\n ...newMessage,\r\n answer: '抱歉,发生了错误,请稍后再试。',\r\n error: error,\r\n isStreaming: false\r\n }];\r\n this.currentStreamingMessage = null;\r\n this.isLoading = false;\r\n },\r\n onComplete: async () => {\r\n\r\n this.isLoading = false;\r\n const latestAIMessage = this.currentStreamingMessage;\r\n latestAIMessage.isStreaming = false;\r\n // 更新消息列表\r\n this.messages = [...this.messages, latestAIMessage];\r\n this.currentStreamingMessage = null;\r\n\r\n }\r\n });\r\n }\r\n\r\n\r\n // 修改滚动处理函数\r\n private handleScroll = () => {\r\n // 只有当用户正在滚动时才更新自动滚动状态\r\n if (this.isUserScrolling) {\r\n\r\n const chatHistory = this.hostElement.shadowRoot?.querySelector('.chat-history');\r\n if (!chatHistory) return;\r\n\r\n const { scrollTop, scrollHeight, clientHeight } = chatHistory;\r\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\r\n\r\n // 更新是否应该自动滚动的状态\r\n this.shouldAutoScroll = distanceFromBottom <= this.SCROLL_THRESHOLD;\r\n\r\n }\r\n };\r\n\r\n // 添加触摸开始事件处理\r\n private handleTouchStart = () => {\r\n this.isUserScrolling = true;\r\n };\r\n\r\n // 添加触摸结束事件处理\r\n private handleTouchEnd = () => {\r\n setTimeout(() => {\r\n this.isUserScrolling = false;\r\n }, 100); // 添加小延迟以确保滚动事件处理完成\r\n };\r\n\r\n private _wheelTimer: any = null;\r\n\r\n // 添加鼠标滚轮事件处理\r\n private handleWheel = () => {\r\n this.isUserScrolling = true;\r\n\r\n // 清除之前的定时器(如果存在)\r\n if (this._wheelTimer) {\r\n clearTimeout(this._wheelTimer);\r\n }\r\n\r\n // 设置新的定时器\r\n this._wheelTimer = setTimeout(() => {\r\n this.isUserScrolling = false;\r\n }, 150); // 滚轮停止后的延迟时间\r\n };\r\n\r\n\r\n private scrollToBottom() {\r\n if (!this.shouldAutoScroll) return;\r\n\r\n const chatHistory = this.hostElement.shadowRoot?.querySelector('.chat-history');\r\n if (chatHistory && this.isOpen) {\r\n // 强制浏览器重新计算布局\r\n chatHistory.scrollTop = chatHistory.scrollHeight;\r\n }\r\n }\r\n\r\n // 添加 componentDidRender 生命周期方法,用于在组件渲染后滚动到底部\r\n componentDidRender() {\r\n if (this.isLoadingHistory || (this.shouldAutoScroll && this.isOpen)) {\r\n const chatHistory = this.hostElement.shadowRoot?.querySelector('.chat-history');\r\n if (chatHistory) {\r\n chatHistory.scrollTop = chatHistory.scrollHeight;\r\n }\r\n }\r\n }\r\n\r\n\r\n // 修改 loadHistoryMessages 方法\r\n private async loadHistoryMessages() {\r\n if (!this.conversationId) return;\r\n\r\n this.isLoadingHistory = true;\r\n console.log('加载历史消息...');\r\n\r\n try {\r\n const result = await sendHttpRequest({\r\n url: '/sdk/v1/knowledge/chat/conversation-history',\r\n method: 'GET',\r\n data: {\r\n conversation_id: this.conversationId,\r\n }\r\n });\r\n\r\n if (result.success && result.data) {\r\n const historyData = result.data.data || [];\r\n const formattedMessages: ChatMessage[] = historyData.map(msg => {\r\n const time = new Date(parseInt(msg.created_at) * 1000);\r\n const hours = time.getHours().toString().padStart(2, '0');\r\n const minutes = time.getMinutes().toString().padStart(2, '0');\r\n const timeStr = `${hours}:${minutes}`;\r\n\r\n // 创建完整的消息对象,保持统一结构\r\n return {\r\n id: msg.id,\r\n conversation_id: msg.conversation_id,\r\n parent_message_id: msg.parent_message_id || \"00000000-0000-0000-0000-000000000000\",\r\n inputs: msg.inputs || {},\r\n query: msg.query || \"\",\r\n answer: msg.answer || \"\",\r\n message_files: msg.message_files || [],\r\n feedback: msg.feedback || {},\r\n retriever_resources: msg.retriever_resources || [],\r\n created_at: msg.created_at,\r\n agent_thoughts: msg.agent_thoughts || [],\r\n status: msg.status || \"normal\",\r\n error: msg.error,\r\n // 组件内部使用的字段\r\n time: timeStr,\r\n isStreaming: false\r\n };\r\n });\r\n\r\n this.messages = formattedMessages;\r\n\r\n\r\n }\r\n } catch (error) {\r\n console.error('加载历史消息失败:', error);\r\n alert(error instanceof Error ? error.message : '加载历史消息失败,请刷新重试');\r\n } finally {\r\n this.isLoadingHistory = false;\r\n setTimeout(() => {\r\n this.shouldAutoScroll = true;\r\n this.scrollToBottom();\r\n }, 200);\r\n }\r\n }\r\n\r\n\r\n // 修改音频转文字方法\r\n private async convertAudioToText(cosKey: string): Promise<string | null> {\r\n try {\r\n const result = await sendHttpRequest<{ text: string }>({\r\n url: '/sdk/v1/tts/audio_to_text',\r\n method: 'POST',\r\n data: {\r\n cos_key: cosKey\r\n }\r\n });\r\n\r\n if (result.success && result.data && result.data.text) {\r\n return result.data.text;\r\n } else {\r\n console.warn('音频转文字返回结果格式不正确');\r\n return null;\r\n }\r\n } catch (error) {\r\n console.error('音频转文字错误:', error);\r\n return null;\r\n }\r\n }\r\n\r\n\r\n // 添加获取智能体详情的方法\r\n private async fetchEmployeeDetails() {\r\n if (!this.employeeId || !this.token) return;\r\n\r\n this.isLoadingEmployeeDetails = true;\r\n\r\n try {\r\n const result = await sendHttpRequest({\r\n url: `/sdk/v1/knowledge/chat/employee/${this.employeeId}`,\r\n method: 'GET',\r\n });\r\n if (result.success && result.data) {\r\n this.employeeDetails = result.data;\r\n\r\n // 根据 show_quote_doc 设置是否显示引用文档\r\n if (this.employeeDetails.show_quote_doc !== undefined) {\r\n this.showReferences = this.employeeDetails.show_quote_doc;\r\n }\r\n\r\n // 设置预设问题\r\n if (this.employeeDetails.quick_questions) {\r\n this.quickQuestions = this.employeeDetails.quick_questions\r\n .split(',')\r\n .map(q => q.trim())\r\n .filter(q => q);\r\n }\r\n\r\n // 如果有上次会话ID,加载历史消息\r\n if (this.conversationId) {\r\n await this.loadHistoryMessages();\r\n }\r\n } else {\r\n alert('获取智能体详情失败,请检查token和employeeId是否正确');\r\n }\r\n } catch (error) {\r\n console.error('获取智能体详情失败:', error);\r\n } finally {\r\n this.isLoadingEmployeeDetails = false;\r\n }\r\n }\r\n\r\n // 修改 isOpen 的 watch 方法\r\n @Watch('isOpen')\r\n async handleIsOpenChange(newValue: boolean) {\r\n if (newValue) {\r\n // 验证 employeeId 是否存在\r\n if (!this.employeeId) {\r\n console.error('未提供数字员工ID (employeeId)');\r\n setTimeout(() => alert('请提供有效的数字员工ID'), 0);\r\n return;\r\n }\r\n await verifyApiKey(this.token);\r\n\r\n // 获取智能体详情\r\n await this.fetchEmployeeDetails();\r\n }\r\n }\r\n\r\n\r\n // 确保组件卸载时释放资源\r\n disconnectedCallback() {\r\n // 组件销毁时移除事件监听器\r\n document.removeEventListener('pcm-token-invalid', this.tokenInvalidListener);\r\n\r\n // 清理音频录制计时器\r\n if (this.audioRecordingTimer) {\r\n clearInterval(this.audioRecordingTimer);\r\n this.audioRecordingTimer = null;\r\n }\r\n\r\n // 停止音频录制\r\n this.stopAudioRecording();\r\n\r\n }\r\n\r\n\r\n // 处理文本输入变化\r\n private handleTextInputChange = (event: Event) => {\r\n const input = event.target as HTMLTextAreaElement;\r\n this.textAnswer = input.value;\r\n };\r\n\r\n // 添加处理键盘事件的方法\r\n private handleKeyDown = (event: KeyboardEvent) => {\r\n // 如果按下的是回车键\r\n if (event.key === 'Enter') {\r\n // 如果同时按下了Ctrl键,允许换行\r\n if (event.ctrlKey) {\r\n return; // 不阻止默认行为,允许插入换行符\r\n } else {\r\n // 阻止默认的换行行为\r\n event.preventDefault();\r\n // 如果文本框不为空且不处于禁用状态,则发送消息\r\n if (this.textAnswer.trim() && !this.isSubmittingText && !this.isLoading &&\r\n !this.currentStreamingMessage) {\r\n this.submitTextAnswer();\r\n }\r\n }\r\n }\r\n };\r\n\r\n // 修改提交文本回答的方法\r\n private submitTextAnswer = async () => {\r\n if (!this.textAnswer.trim() || this.isSubmittingText) {\r\n return;\r\n }\r\n\r\n this.isSubmittingText = true;\r\n\r\n try {\r\n // 保存当前输入内容\r\n const textToSend = this.textAnswer;\r\n\r\n // 立即清空文本输入\r\n this.textAnswer = '';\r\n\r\n // 发送用户输入的文本作为查询\r\n await this.sendMessageToAPI(textToSend);\r\n } catch (error) {\r\n console.error('提交文本回答失败:', error);\r\n alert('提交回答失败,请重试');\r\n } finally {\r\n this.isSubmittingText = false;\r\n }\r\n };\r\n\r\n // 处理语音输入按钮点击\r\n private handleVoiceInputClick = () => {\r\n if (this.isRecordingAudio) {\r\n this.stopAudioRecording();\r\n } else {\r\n // 直接在用户交互事件处理程序中请求权限\r\n // 不使用 async/await,而是使用 Promise 链\r\n navigator.mediaDevices.getUserMedia({ audio: true })\r\n .then(stream => {\r\n // 权限已获取,开始录音\r\n this.startRecordingWithStream(stream);\r\n })\r\n .catch(error => {\r\n console.error('麦克风权限请求失败:', error);\r\n\r\n // 根据错误类型提供更具体的提示\r\n if (error.name === 'NotAllowedError' || error.name === 'PermissionDeniedError') {\r\n alert('麦克风访问被拒绝。\\n\\n在Mac上,请前往系统偏好设置 > 安全性与隐私 > 隐私 > 麦克风,确保您的浏览器已被允许访问麦克风。');\r\n } else {\r\n alert('无法访问麦克风,请确保已授予权限并且麦克风设备正常工作。');\r\n }\r\n });\r\n }\r\n };\r\n\r\n // 新方法:使用已获取的媒体流开始录音\r\n private startRecordingWithStream(stream: MediaStream) {\r\n try {\r\n // 检测浏览器支持的音频MIME类型\r\n const mimeType = this.getSupportedAudioMimeType();\r\n\r\n // 创建MediaRecorder实例\r\n let audioRecorder;\r\n try {\r\n audioRecorder = new MediaRecorder(stream, {\r\n mimeType: mimeType\r\n });\r\n } catch (e) {\r\n console.warn('指定的音频MIME类型不受支持,使用默认设置:', e);\r\n try {\r\n audioRecorder = new MediaRecorder(stream);\r\n } catch (recorderError) {\r\n // 停止并释放媒体流\r\n stream.getTracks().forEach(track => track.stop());\r\n console.error('无法创建音频录制器:', recorderError);\r\n alert('您的浏览器不支持音频录制功能');\r\n return;\r\n }\r\n }\r\n\r\n this.audioRecorder = audioRecorder;\r\n this.audioChunks = [];\r\n this.isRecordingAudio = true;\r\n this.audioRecordingStartTime = Date.now();\r\n this.audioRecordingTimeLeft = this.maxAudioRecordingTime;\r\n\r\n // 设置数据可用事件处理\r\n audioRecorder.ondataavailable = (event) => {\r\n if (event.data.size > 0) {\r\n this.audioChunks.push(event.data);\r\n }\r\n };\r\n\r\n // 设置录制停止事件处理\r\n audioRecorder.onstop = () => {\r\n // 停止并释放媒体流\r\n stream.getTracks().forEach(track => track.stop());\r\n\r\n // 处理录制的音频\r\n this.processAudioRecording();\r\n };\r\n\r\n // 开始录制\r\n audioRecorder.start(100); // 每100毫秒获取一次数据\r\n\r\n // 设置录制计时器\r\n this.audioRecordingTimer = setInterval(() => {\r\n const elapsedTime = Math.floor((Date.now() - this.audioRecordingStartTime) / 1000);\r\n this.audioRecordingTimeLeft = Math.max(0, this.maxAudioRecordingTime - elapsedTime);\r\n\r\n // 时间到自动停止录制\r\n if (this.audioRecordingTimeLeft <= 0) {\r\n this.stopAudioRecording();\r\n }\r\n }, 1000);\r\n\r\n } catch (error) {\r\n // 停止并释放媒体流\r\n stream.getTracks().forEach(track => track.stop());\r\n console.error('开始录音失败:', error);\r\n alert('开始录音失败,请确保麦克风设备正常工作');\r\n }\r\n }\r\n\r\n // 处理录制的音频\r\n private async processAudioRecording() {\r\n if (this.audioChunks.length === 0) {\r\n console.warn('没有录制到音频数据');\r\n return;\r\n }\r\n\r\n try {\r\n this.isConvertingAudio = true;\r\n\r\n // 创建音频Blob\r\n const audioType = this.getSupportedAudioMimeType() || 'audio/webm';\r\n const audioBlob = new Blob(this.audioChunks, { type: audioType });\r\n\r\n if (audioBlob.size === 0) {\r\n console.warn('录制的音频为空');\r\n this.isConvertingAudio = false;\r\n return;\r\n }\r\n\r\n // 创建File对象\r\n const fileExtension = audioType.includes('webm') ? 'webm' : 'mp3';\r\n const fileName = `audio_input.${fileExtension}`;\r\n const audioFile = new File([audioBlob], fileName, { type: audioType });\r\n\r\n // 上传音频文件\r\n const fileInfo = await uploadFileToBackend(audioFile, {\r\n }, {\r\n 'tags': ['audio']\r\n });\r\n\r\n // 调用音频转文字API\r\n const transcriptionText = await this.convertAudioToText(fileInfo.cos_key);\r\n\r\n // 将转录文本追加到文本框,而不是替换\r\n if (transcriptionText) {\r\n // 保存当前光标位置\r\n const textArea = this.hostElement.shadowRoot?.querySelector('.text-answer-input') as HTMLTextAreaElement;\r\n const cursorPosition = textArea?.selectionStart || this.textAnswer.length;\r\n\r\n // 在光标位置插入识别的文本\r\n const beforeCursor = this.textAnswer.substring(0, cursorPosition);\r\n const afterCursor = this.textAnswer.substring(cursorPosition);\r\n\r\n // 如果当前文本不为空且不以空格结尾,添加一个空格\r\n const spacer = (beforeCursor.length > 0 && !beforeCursor.endsWith(' ')) ? ' ' : '';\r\n\r\n // 更新文本\r\n this.textAnswer = beforeCursor + spacer + transcriptionText + afterCursor;\r\n\r\n // 设置新的光标位置\r\n setTimeout(() => {\r\n if (textArea) {\r\n const newPosition = cursorPosition + spacer.length + transcriptionText.length;\r\n textArea.focus();\r\n textArea.setSelectionRange(newPosition, newPosition);\r\n }\r\n }, 0);\r\n } else {\r\n console.warn('未能识别语音内容');\r\n alert('未能识别语音内容,请重试或直接输入文字');\r\n }\r\n } catch (error) {\r\n console.error('处理音频录制失败:', error);\r\n alert('语音识别失败,请重试');\r\n } finally {\r\n this.isConvertingAudio = false;\r\n this.audioChunks = [];\r\n }\r\n }\r\n\r\n // 获取支持的音频MIME类型\r\n private getSupportedAudioMimeType(): string {\r\n // 按优先级排列的音频MIME类型列表\r\n const mimeTypes = [\r\n 'audio/webm;codecs=opus',\r\n 'audio/webm',\r\n 'audio/mp4',\r\n 'audio/ogg;codecs=opus',\r\n 'audio/ogg',\r\n '' // 空字符串表示使用浏览器默认值\r\n ];\r\n\r\n // 检查MediaRecorder是否可用\r\n if (!window.MediaRecorder) {\r\n console.warn('MediaRecorder API不可用');\r\n return '';\r\n }\r\n\r\n // 检查每种MIME类型是否受支持\r\n for (const type of mimeTypes) {\r\n if (!type) return ''; // 如果是空字符串,直接返回\r\n\r\n try {\r\n if (MediaRecorder.isTypeSupported(type)) {\r\n return type;\r\n }\r\n } catch (e) {\r\n console.warn(`检查音频MIME类型支持时出错 ${type}:`, e);\r\n }\r\n }\r\n\r\n // 如果没有找到支持的类型,返回空字符串\r\n console.warn('没有找到支持的音频MIME类型,将使用浏览器默认值');\r\n return '';\r\n }\r\n\r\n // 停止录制音频\r\n private stopAudioRecording() {\r\n if (this.audioRecorder && this.isRecordingAudio) {\r\n this.audioRecorder.stop();\r\n this.isRecordingAudio = false;\r\n\r\n // 清理计时器\r\n if (this.audioRecordingTimer) {\r\n clearInterval(this.audioRecordingTimer);\r\n this.audioRecordingTimer = null;\r\n }\r\n }\r\n }\r\n\r\n // 添加处理推荐问题点击的方法\r\n private handleSuggestedQuestionClick = (question: string) => {\r\n if (this.isLoading || this.currentStreamingMessage) return;\r\n this.textAnswer = question;\r\n this.submitTextAnswer();\r\n };\r\n\r\n // 添加文档下载方法\r\n private async handleDocumentDownload(ref: Reference) {\r\n try {\r\n console.log('下载文档:', ref);\r\n\r\n // 从文档ID中提取数字部分\r\n const docIdMatch = ref.doc_info.doc_id.match(/docID_(\\d+)/);\r\n if (!docIdMatch || !docIdMatch[1]) {\r\n alert('无法解析文档ID');\r\n return;\r\n }\r\n const docId = docIdMatch[1];\r\n // 获取文档详细信息\r\n const result = await sendHttpRequest({\r\n url: `/sdk/v1/files/${docId}/info`,\r\n method: 'GET',\r\n });\r\n\r\n\r\n if (result.success && result.data?.file_url) {\r\n // 构建预览URL\r\n const baseUrl = result.data.file_url;\r\n const previewUrl = `${baseUrl}${baseUrl.includes('?') ? '&' : '?'}ci-process=doc-preview&copyable=1&dstType=html`;\r\n\r\n // 打开预览链接\r\n window.open(previewUrl, '_blank');\r\n } else {\r\n alert('获取文档链接失败');\r\n }\r\n } catch (error) {\r\n console.error('下载文档失败:', error);\r\n alert('下载文档失败,请稍后再试');\r\n }\r\n }\r\n\r\n // 添加清除对话记录的方法\r\n private handleClearConversation = () => {\r\n if (this.isLoading || this.currentStreamingMessage) return;\r\n\r\n // 触发清除对话事件,传递当前会话ID\r\n this.clearConversation.emit(this.conversationId);\r\n\r\n // 清空本地消息记录\r\n this.messages = [];\r\n this.currentStreamingMessage = null;\r\n this.conversationId = undefined;\r\n this.currentRefs = [];\r\n this.suggestedQuestions = [];\r\n };\r\n\r\n\r\n\r\n render() {\r\n if (!this.isOpen) return null;\r\n\r\n const modalStyle = {\r\n zIndex: String(this.zIndex)\r\n };\r\n\r\n const containerClass = {\r\n 'modal-container': true,\r\n 'fullscreen': this.fullscreen\r\n };\r\n\r\n const overlayClass = {\r\n 'modal-overlay': true,\r\n 'fullscreen-overlay': this.fullscreen\r\n };\r\n\r\n // 确定要显示的图标:优先使用传入的icon,如果未设置则使用智能体头像\r\n const displayIcon = this.icon || (this.employeeDetails?.avatar || '');\r\n\r\n // 确定要显示的标题:优先使用传入的modalTitle,如果未设置则使用智能体名称\r\n const displayTitle = this.modalTitle || (this.employeeDetails?.name || '在线客服');\r\n\r\n // 修改渲染引用文档组件的方法\r\n const renderReferences = () => {\r\n // 只有当没有正在流式输出的消息且有引用文档且未设置隐藏引用且showReferences为true时才显示\r\n if (!this.showReferences || this.currentRefs.length === 0 || this.currentStreamingMessage || this.shouldHideReferences) return null;\r\n\r\n return (\r\n <div class=\"references-section\">\r\n <h3 class=\"references-title\">引用文档</h3>\r\n <div class=\"references-list\">\r\n {this.currentRefs.map((ref, index) => (\r\n <div\r\n class=\"reference-item\"\r\n key={`ref-${index}`}\r\n onClick={() => this.handleDocumentDownload(ref)}\r\n >\r\n <div class=\"reference-header\">\r\n <span class=\"reference-icon\">\r\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\r\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z\" />\r\n </svg>\r\n </span>\r\n <span class=\"reference-name\">{ref.doc_info.doc_name}</span>\r\n <span class=\"download-icon\">\r\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\r\n <path d=\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n // 渲染推荐问题组件\r\n const renderSuggestedQuestions = () => {\r\n\r\n // 只有当没有正在流式输出的消息时才显示推荐问题\r\n if (!this.customInputs.show_suggested_questions && !this.currentStreamingMessage) {\r\n return null;\r\n }\r\n\r\n if (this.suggestedQuestionsLoading) {\r\n return (\r\n <div class=\"loading-suggestions\">\r\n <div class=\"loading-spinner-small\"></div>\r\n </div>\r\n );\r\n }\r\n\r\n if (this.suggestedQuestions.length === 0) return null;\r\n\r\n return (\r\n <div class=\"suggested-questions\">\r\n <h3 class=\"suggested-title\">推荐问题</h3>\r\n {this.suggestedQuestions.map((question, index) => (\r\n <div\r\n class=\"suggested-question\"\r\n key={`question-${index}`}\r\n onClick={() => this.handleSuggestedQuestionClick(question)}\r\n >\r\n <span>{question}</span>\r\n <span class=\"arrow-right\">\r\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\r\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\r\n </svg>\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n // 渲染预设问题组件\r\n const renderQuickQuestions = () => {\r\n // 只有在没有会话ID且有预设问题且没有正在流式输出的消息时才显示\r\n if (this.conversationId || this.quickQuestions.length === 0 || this.currentStreamingMessage) return null;\r\n\r\n return (\r\n <div class=\"suggested-questions\">\r\n <h3 class=\"suggested-title\">常见问题</h3>\r\n {this.quickQuestions.map((question, index) => (\r\n <div\r\n class=\"suggested-question\"\r\n key={`preset-question-${index}`}\r\n onClick={() => this.handleSuggestedQuestionClick(question)}\r\n >\r\n <span>{question}</span>\r\n <span class=\"arrow-right\">\r\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\r\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\r\n </svg>\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n // 修改文本输入区域渲染函数\r\n const renderTextInputArea = () => (\r\n <div class=\"text-input-area\">\r\n <textarea\r\n class=\"text-answer-input\"\r\n placeholder=\"发消息\"\r\n value={this.textAnswer}\r\n onInput={this.handleTextInputChange}\r\n onKeyDown={this.handleKeyDown}\r\n disabled={this.isRecordingAudio || this.isConvertingAudio}\r\n ></textarea>\r\n <div class=\"input-toolbar\">\r\n <div class=\"toolbar-actions\">\r\n <button\r\n class=\"toolbar-button\"\r\n title=\"清除对话记录\"\r\n onClick={this.handleClearConversation}\r\n disabled={this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage || this.messages.length === 0}\r\n >\r\n <img src=\"https://pcm-pub-1351162788.cos.ap-guangzhou.myqcloud.com/sdk/image/brush-alt-svgrepo-com.png\" alt=\"清除对话记录\" />\r\n </button>\r\n </div>\r\n <div class=\"toolbar-actions\">\r\n <button\r\n class={{\r\n 'toolbar-button': true,\r\n 'recording': this.isRecordingAudio,\r\n 'converting': this.isConvertingAudio\r\n }}\r\n title={this.isRecordingAudio ? '点击停止录音' : this.isConvertingAudio ? '正在识别语音...' : '语音输入'}\r\n onClick={this.handleVoiceInputClick}\r\n disabled={this.isConvertingAudio || this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage}\r\n >\r\n {this.isRecordingAudio ? (\r\n <div>\r\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\r\n <path d=\"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z\" />\r\n <path d=\"M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z\" />\r\n <circle cx=\"12\" cy=\"11\" r=\"4\" fill=\"red\" />\r\n </svg>\r\n {/* <span class=\"recording-time\">{this.audioRecordingTimeLeft}s</span> */}\r\n </div>\r\n ) : this.isConvertingAudio ? (\r\n <div class=\"converting-indicator\">\r\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\r\n <path d=\"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\" />\r\n </svg>\r\n </div>\r\n ) : (\r\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\r\n <path d=\"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z\" />\r\n <path d=\"M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </div>\r\n <div\r\n class={{\r\n 'send-button': true,\r\n 'disabled': !this.textAnswer.trim() || this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage || this.isRecordingAudio || this.isConvertingAudio\r\n }}\r\n onClick={() => {\r\n if (!this.textAnswer.trim() || this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage || this.isRecordingAudio || this.isConvertingAudio) {\r\n return;\r\n }\r\n this.submitTextAnswer();\r\n }}\r\n >\r\n <img src=\"https://pcm-pub-1351162788.cos.ap-guangzhou.myqcloud.com/sdk/image/i_send.png\" alt=\"发送\" />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n return (\r\n <div class={overlayClass} style={modalStyle}>\r\n <div class={containerClass}>\r\n {this.isShowHeader && (\r\n <div class=\"modal-header\">\r\n <div class=\"header-left\">\r\n {displayIcon && <img src={displayIcon} class=\"header-icon\" alt=\"应用图标\" />}\r\n <div>{displayTitle}</div>\r\n </div>\r\n {this.isNeedClose && (\r\n <button class=\"close-button\" onClick={this.handleClose}>\r\n <span>×</span>\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div class=\"chat-container\">\r\n <div\r\n class=\"chat-history\"\r\n onScroll={this.handleScroll}\r\n onTouchStart={this.handleTouchStart}\r\n onTouchEnd={this.handleTouchEnd}\r\n onWheel={this.handleWheel}\r\n >\r\n {this.isLoadingHistory ? (\r\n <div class=\"loading-container\">\r\n <div class=\"loading-spinner\"></div>\r\n <p>加载历史消息中...</p>\r\n </div>\r\n ) : (\r\n <div>\r\n {this.messages.map((message) => (\r\n <div id={`message_${message.id}`} key={message.id}>\r\n <pcm-chat-message\r\n message={message}\r\n showFeedbackButtons={false}\r\n onMessageChange={(event) => {\r\n const updatedMessages = this.messages.map(msg =>\r\n msg.id === message.id ? { ...msg, ...event.detail } : msg\r\n );\r\n this.messages = updatedMessages;\r\n }}\r\n ></pcm-chat-message>\r\n </div>\r\n ))}\r\n {this.currentStreamingMessage && (\r\n <div id={`message_${this.currentStreamingMessage.id}`}>\r\n <pcm-chat-message\r\n message={this.currentStreamingMessage}\r\n showFeedbackButtons={false}\r\n ></pcm-chat-message>\r\n </div>\r\n )}\r\n {this.messages.length === 0 && !this.currentStreamingMessage && (\r\n <div class=\"empty-state\">\r\n {this.isLoadingEmployeeDetails ? (\r\n <p>加载中...</p>\r\n ) : this.employeeDetails?.default_greeting ? (\r\n <p>{this.employeeDetails.default_greeting}</p>\r\n ) : (\r\n <p>请输入...</p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* 添加引用文档和推荐问题组件 */}\r\n {renderReferences()}\r\n {renderSuggestedQuestions()}\r\n {renderQuickQuestions()}\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div class=\"recording-section\">\r\n <div class=\"recording-container\">\r\n {renderTextInputArea()}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}"]}
1
+ {"version":3,"file":"pcm-zsk-chat-modal.js","sourceRoot":"","sources":["../../../../src/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, State, Event, EventEmitter, Element, Watch } from '@stencil/core';\nimport { sendSSERequest, sendHttpRequest, uploadFileToBackend, verifyApiKey } from '../../utils/utils';\nimport { ChatMessage } from '../../interfaces/chat';\nimport { ConversationStartEventData, StreamCompleteEventData } from '../../components';\nimport { authStore } from '../../../store/auth.store';\nimport { configStore } from '../../../store/config.store';\n\n/**\n * 知识库问答助手\n */\n\n\n// 添加引用文档接口\ninterface Reference {\n doc_info: {\n doc_name: string;\n doc_id: string;\n };\n content: string;\n}\n\n// 添加智能体详情接口\ninterface EmployeeDetails {\n id: number;\n name: string;\n description: string;\n avatar: string;\n default_greeting: string;\n quick_questions: string;\n user_id: number;\n created_at: string;\n updated_at: string;\n is_active: boolean;\n dify_app_key: string | null;\n last_conversation_id: string | null;\n workflow_id: string;\n agent_name: string;\n show_quote_doc?: boolean;\n}\n\n@Component({\n tag: 'pcm-zsk-chat-modal',\n styleUrl: 'pcm-zsk-chat-modal.css',\n shadow: true,\n})\nexport class ChatKBModal {\n /**\n * 模态框标题\n */\n @Prop() modalTitle?: string;\n\n /**\n * SDK鉴权密钥\n */\n @Prop({ attribute: 'token' }) token!: string;\n\n /**\n * 是否显示聊天模态框\n */\n @Prop({ mutable: true }) isOpen: boolean = false;\n\n /**\n * 聊天消息历史\n */\n @State() messages: ChatMessage[] = [];\n\n /**\n * 当点击模态框关闭时触发\n */\n @Event() modalClosed: EventEmitter<void>;\n\n /**\n * 应用图标URL,如果未设置则使用智能体头像\n */\n @Prop() icon?: string;\n\n /**\n * 聊天框的页面层级\n */\n @Prop() zIndex?: number = 1000;\n\n /**\n * 是否展示顶部标题栏\n */\n @Prop() isShowHeader: boolean = true;\n\n /**\n * 是否展示右上角的关闭按钮\n */\n @Prop() isNeedClose: boolean = true;\n\n\n /**\n * 会话ID,传入继续对话,否则创建新会话\n */\n @Prop({ mutable: true }) conversationId?: string;\n\n /**\n * 当前助手回复的消息\n */\n @State() currentAssistantMessage: string = '';\n\n /**\n * 是否正在加载回复\n */\n @State() isLoading: boolean = false;\n\n /**\n * 当前正在流式输出的消息\n */\n @State() currentStreamingMessage: ChatMessage | null = null;\n\n // 添加新的状态控制\n @State() shouldAutoScroll: boolean = true;\n\n @State() isLoadingHistory: boolean = false;\n\n // 使用 @Element 装饰器获取组件的 host 元素\n @Element() hostElement: HTMLElement;\n\n /**\n * 一轮对话结束时的回调\n */\n @Event() streamComplete: EventEmitter<StreamCompleteEventData>;\n\n /**\n * 新会话开始的回调,只会在一轮对话开始时触发一次\n */\n @Event() conversationStart: EventEmitter<ConversationStartEventData>;;\n\n\n /**\n * SDK密钥验证失败事件\n */\n @Event() tokenInvalid: EventEmitter<void>;\n\n\n private readonly SCROLL_THRESHOLD = 20;\n\n /**\n * 是否以全屏模式打开,移动端建议设置为true\n */\n @Prop() fullscreen: boolean = false;\n\n // 添加文字输入相关状态\n @State() textAnswer: string = '';\n @State() isSubmittingText: boolean = false;\n\n /**\n * 自定义智能体inputs输入参数:<br>\n * 1. show_suggested_questions: 是否显示推荐问题<br>\n */\n @Prop() customInputs: Record<string, string> = {\n show_suggested_questions: 'false',\n };\n\n // 添加推荐问题和引用文档状态\n @State() suggestedQuestions: string[] = [];\n @State() suggestedQuestionsLoading: boolean = false;\n @State() currentRefs: Reference[] = [];\n\n /**\n * 是否显示引用文档(总开关)\n */\n @State() showReferences: boolean = false;\n\n\n /**\n * 数字员工ID,从聘才猫开发平台创建数字员工后,点击导出获取\n */\n @Prop() employeeId!: string;\n\n\n // 添加语音输入相关状态\n @State() isRecordingAudio: boolean = false;\n @State() audioRecorder: MediaRecorder | null = null;\n @State() audioChunks: BlobPart[] = [];\n @State() isConvertingAudio: boolean = false;\n @State() audioRecordingTimeLeft: number = 60; // 最大录音时间(秒)\n @State() audioRecordingTimer: any = null;\n @State() audioRecordingStartTime: number = 0;\n\n /**\n * 语音录制最大时长(秒)\n */\n @Prop() maxAudioRecordingTime: number = 60;\n\n /**\n * 智能体详情\n */\n @State() employeeDetails: EmployeeDetails | null = null;\n\n /**\n * 是否正在加载智能体详情\n */\n @State() isLoadingEmployeeDetails: boolean = false;\n\n /**\n * 预设问题列表\n */\n @State() quickQuestions: string[] = [];\n\n private tokenInvalidListener: () => void;\n\n /**\n * 当点击清除对话记录按钮时触发\n */\n @Event() clearConversation: EventEmitter<string>;\n\n // 是否应该隐藏引用文档(每次对话是否隐藏引用文档)\n @State() shouldHideReferences: boolean = false;\n\n // 添加新的状态来追踪用户交互\n @State() isUserScrolling: boolean = false;\n\n @Watch('token')\n handleTokenChange(newToken: string) {\n // 当传入的 token 变化时,更新 authStore 中的 token\n if (newToken && newToken !== authStore.getToken()) {\n authStore.setToken(newToken);\n }\n }\n\n\n componentWillLoad() {\n\n // 将 zIndex 存入配置缓存\n if (this.zIndex) {\n configStore.setItem('modal-zIndex', this.zIndex);\n }\n if (this.token) {\n authStore.setToken(this.token);\n }\n\n // 添加全局token无效事件监听器\n this.tokenInvalidListener = () => {\n this.tokenInvalid.emit();\n };\n document.addEventListener('pcm-token-invalid', this.tokenInvalidListener);\n }\n\n\n private handleClose = () => {\n this.modalClosed.emit();\n };\n\n\n private async sendMessageToAPI(message: string) {\n // 验证 employeeId 是否存在\n if (!this.employeeId) {\n alert('请提供有效的数字员工ID');\n return;\n }\n\n this.isLoading = true;\n let answer = '';\n\n const now = new Date();\n const time = `${now.getHours()}:${now.getMinutes().toString().padStart(2, '0')}`;\n\n // 修改消息处理逻辑,移除文件上传相关代码\n const queryText = message.trim() || '请开始';\n\n // 重置推荐问题和引用文档\n this.suggestedQuestions = [];\n this.currentRefs = [];\n\n // 重置引用文档显示状态\n this.shouldHideReferences = false;\n\n // 创建新的消息对象\n const newMessage: ChatMessage = {\n id: `temp-${Date.now()}`, // 临时ID,将被服务器返回的ID替换\n conversation_id: this.conversationId, // 会话ID\n parent_message_id: \"00000000-0000-0000-0000-000000000000\", // 默认父消息ID\n inputs: this.customInputs || {}, // 使用解析后的输入参数\n query: queryText, // 用户输入的消息内容\n answer: '', // 初始为空\n message_files: [], // 消息附件\n feedback: {}, // 反馈\n retriever_resources: [], // 检索资源\n created_at: Math.floor(Date.now() / 1000).toString(), // 创建时间\n agent_thoughts: [], // 代理思考过程\n status: \"normal\", // 消息状态\n error: null, // 错误信息\n // 添加组件内部使用的字段\n time: time, // 消息时间(显示用)\n isStreaming: true // 是否正在流式输出\n };\n\n // 设置当前流式消息\n this.currentStreamingMessage = newMessage;\n\n this.shouldAutoScroll = true;\n // 滚动到底部\n this.scrollToBottom();\n\n // 准备请求数据\n const requestData: any = {\n response_mode: 'streaming',\n conversation_id: this.conversationId,\n query: queryText,\n employee_id: this.employeeId,\n };\n\n // 合并基本输入参数和自定义输入参数\n requestData.inputs = {\n // 合并自定义输入参数\n ...this.customInputs,\n };\n\n await sendSSERequest({\n url: `/sdk/v1/knowledge/chat/chat-messages`,\n method: 'POST',\n data: requestData,\n onMessage: (data) => {\n console.log('收到Stream数据:', data);\n\n if (data.conversation_id && !this.conversationId) {\n this.conversationId = data.conversation_id;\n this.conversationStart.emit({\n conversation_id: data.conversation_id,\n event: data.event,\n message_id: data.message_id,\n id: data.id,\n });\n }\n\n // 处理问题建议\n if (data.event === 'node_started' && data.data.title.includes('聘才猫推荐开始')) {\n this.suggestedQuestionsLoading = true;\n }\n\n // 添加对\"不显示引用\"的检测\n if (data.event === 'node_started' && data.data.title.includes('不显示引用')) {\n this.shouldHideReferences = true;\n }\n\n // 处理问题建议\n if (data.event === 'node_finished' && data.data.title.includes('聘才猫推荐结束')) {\n let suggestions: string[] = [];\n\n try {\n // 清理 markdown 代码块标记并解析 JSON\n let textContent = data.data.outputs.text;\n if (typeof textContent === 'string') {\n // 移除 markdown 代码块标记\n textContent = textContent.replace(/```json\\n/, '').replace(/```/, '').trim();\n const suggestionData = JSON.parse(textContent);\n\n // 处理标准格式的建议问题\n if (suggestionData.status === 'success' && Array.isArray(suggestionData.items)) {\n suggestions = suggestionData.items.map((item: any) => item.question);\n }\n } else {\n // 如果已经是对象,直接使用\n const suggestionData = textContent;\n if (suggestionData.status === 'success' && Array.isArray(suggestionData.items)) {\n suggestions = suggestionData.items.map((item: any) => item.question);\n }\n }\n } catch (e) {\n console.warn('解析问题建议失败:', e);\n }\n\n this.suggestedQuestions = suggestions;\n this.suggestedQuestionsLoading = false;\n }\n\n // 处理引用文档\n if (data.event === 'node_finished' && data.data?.inputs?.documents) {\n const refs: Reference[] = [];\n\n // 遍历 documents 数组\n data.data.inputs.documents.forEach((arg: any) => {\n // 遍历每个 arg 中的 result_list\n if (arg.result_list && Array.isArray(arg.result_list)) {\n arg.result_list.forEach((result: any) => {\n if (result.doc_info && result.content) {\n refs.push({\n doc_info: {\n doc_name: result.doc_info.doc_name,\n doc_id: result.doc_info.doc_id\n },\n content: result.content\n });\n }\n });\n }\n });\n\n // 去重处理\n const uniqueRefs = new Map();\n refs.forEach((ref: Reference) => {\n if (ref.doc_info && ref.doc_info.doc_id) {\n uniqueRefs.set(ref.doc_info.doc_id, ref);\n }\n });\n\n this.currentRefs = Array.from(uniqueRefs.values());\n }\n\n if (data.event === 'message') {\n\n if (data.event === 'agent_message' || data.event === 'message') {\n if (data.answer) {\n answer += data.answer;\n // 更新消息时保持完整的消息结构\n const updatedMessage: ChatMessage = {\n ...this.currentStreamingMessage,\n answer,\n id: data.message_id || this.currentStreamingMessage.id,\n isStreaming: true,\n // 如果服务器返回了其他字段,也更新它们\n parent_message_id: data.parent_message_id || this.currentStreamingMessage.parent_message_id,\n retriever_resources: data.retriever_resources || this.currentStreamingMessage.retriever_resources,\n agent_thoughts: data.agent_thoughts || this.currentStreamingMessage.agent_thoughts\n };\n this.currentStreamingMessage = updatedMessage;\n this.scrollToBottom();\n }\n }\n }\n if (data.event === \"message_end\") {\n this.streamComplete.emit({\n conversation_id: data.conversation_id || '',\n event: data.event,\n message_id: data.message_id,\n id: data.id,\n });\n }\n },\n onError: (error) => {\n console.error('发生错误:', error);\n alert(error instanceof Error ? error.message : '消息发送失败,请稍后再试');\n this.messages = [...this.messages, {\n ...newMessage,\n answer: '抱歉,发生了错误,请稍后再试。',\n error: error,\n isStreaming: false\n }];\n this.currentStreamingMessage = null;\n this.isLoading = false;\n },\n onComplete: async () => {\n\n this.isLoading = false;\n const latestAIMessage = this.currentStreamingMessage;\n latestAIMessage.isStreaming = false;\n // 更新消息列表\n this.messages = [...this.messages, latestAIMessage];\n this.currentStreamingMessage = null;\n\n }\n });\n }\n\n\n // 修改滚动处理函数\n private handleScroll = () => {\n // 只有当用户正在滚动时才更新自动滚动状态\n if (this.isUserScrolling) {\n\n const chatHistory = this.hostElement.shadowRoot?.querySelector('.chat-history');\n if (!chatHistory) return;\n\n const { scrollTop, scrollHeight, clientHeight } = chatHistory;\n const distanceFromBottom = scrollHeight - scrollTop - clientHeight;\n\n // 更新是否应该自动滚动的状态\n this.shouldAutoScroll = distanceFromBottom <= this.SCROLL_THRESHOLD;\n\n }\n };\n\n // 添加触摸开始事件处理\n private handleTouchStart = () => {\n this.isUserScrolling = true;\n };\n\n // 添加触摸结束事件处理\n private handleTouchEnd = () => {\n setTimeout(() => {\n this.isUserScrolling = false;\n }, 100); // 添加小延迟以确保滚动事件处理完成\n };\n\n private _wheelTimer: any = null;\n\n // 添加鼠标滚轮事件处理\n private handleWheel = () => {\n this.isUserScrolling = true;\n\n // 清除之前的定时器(如果存在)\n if (this._wheelTimer) {\n clearTimeout(this._wheelTimer);\n }\n\n // 设置新的定时器\n this._wheelTimer = setTimeout(() => {\n this.isUserScrolling = false;\n }, 150); // 滚轮停止后的延迟时间\n };\n\n\n private scrollToBottom() {\n if (!this.shouldAutoScroll) return;\n\n const chatHistory = this.hostElement.shadowRoot?.querySelector('.chat-history');\n if (chatHistory && this.isOpen) {\n // 强制浏览器重新计算布局\n chatHistory.scrollTop = chatHistory.scrollHeight;\n }\n }\n\n // 添加 componentDidRender 生命周期方法,用于在组件渲染后滚动到底部\n componentDidRender() {\n if (this.isLoadingHistory || (this.shouldAutoScroll && this.isOpen)) {\n const chatHistory = this.hostElement.shadowRoot?.querySelector('.chat-history');\n if (chatHistory) {\n chatHistory.scrollTop = chatHistory.scrollHeight;\n }\n }\n }\n\n\n // 修改 loadHistoryMessages 方法\n private async loadHistoryMessages() {\n if (!this.conversationId) return;\n\n this.isLoadingHistory = true;\n console.log('加载历史消息...');\n\n try {\n const result = await sendHttpRequest({\n url: '/sdk/v1/knowledge/chat/conversation-history',\n method: 'GET',\n data: {\n conversation_id: this.conversationId,\n }\n });\n\n if (result.success && result.data) {\n const historyData = result.data.data || [];\n const formattedMessages: ChatMessage[] = historyData.map(msg => {\n const time = new Date(parseInt(msg.created_at) * 1000);\n const hours = time.getHours().toString().padStart(2, '0');\n const minutes = time.getMinutes().toString().padStart(2, '0');\n const timeStr = `${hours}:${minutes}`;\n\n // 创建完整的消息对象,保持统一结构\n return {\n id: msg.id,\n conversation_id: msg.conversation_id,\n parent_message_id: msg.parent_message_id || \"00000000-0000-0000-0000-000000000000\",\n inputs: msg.inputs || {},\n query: msg.query || \"\",\n answer: msg.answer || \"\",\n message_files: msg.message_files || [],\n feedback: msg.feedback || {},\n retriever_resources: msg.retriever_resources || [],\n created_at: msg.created_at,\n agent_thoughts: msg.agent_thoughts || [],\n status: msg.status || \"normal\",\n error: msg.error,\n // 组件内部使用的字段\n time: timeStr,\n isStreaming: false\n };\n });\n\n this.messages = formattedMessages;\n\n\n }\n } catch (error) {\n console.error('加载历史消息失败:', error);\n alert(error instanceof Error ? error.message : '加载历史消息失败,请刷新重试');\n } finally {\n this.isLoadingHistory = false;\n setTimeout(() => {\n this.shouldAutoScroll = true;\n this.scrollToBottom();\n }, 200);\n }\n }\n\n\n // 修改音频转文字方法\n private async convertAudioToText(cosKey: string): Promise<string | null> {\n try {\n const result = await sendHttpRequest<{ text: string }>({\n url: '/sdk/v1/tts/audio_to_text',\n method: 'POST',\n data: {\n cos_key: cosKey\n }\n });\n\n if (result.success && result.data && result.data.text) {\n return result.data.text;\n } else {\n console.warn('音频转文字返回结果格式不正确');\n return null;\n }\n } catch (error) {\n console.error('音频转文字错误:', error);\n return null;\n }\n }\n\n\n // 添加获取智能体详情的方法\n private async fetchEmployeeDetails() {\n if (!this.employeeId || !this.token) return;\n\n this.isLoadingEmployeeDetails = true;\n\n try {\n const result = await sendHttpRequest({\n url: `/sdk/v1/knowledge/chat/employee/${this.employeeId}`,\n method: 'GET',\n });\n if (result.success && result.data) {\n this.employeeDetails = result.data;\n\n // 根据 show_quote_doc 设置是否显示引用文档\n if (this.employeeDetails.show_quote_doc !== undefined) {\n this.showReferences = this.employeeDetails.show_quote_doc;\n }\n\n // 设置预设问题\n if (this.employeeDetails.quick_questions) {\n this.quickQuestions = this.employeeDetails.quick_questions\n .split(',')\n .map(q => q.trim())\n .filter(q => q);\n }\n\n // 如果有上次会话ID,加载历史消息\n if (this.conversationId) {\n await this.loadHistoryMessages();\n }\n } else {\n alert('获取智能体详情失败,请检查token和employeeId是否正确');\n }\n } catch (error) {\n console.error('获取智能体详情失败:', error);\n } finally {\n this.isLoadingEmployeeDetails = false;\n }\n }\n\n // 修改 isOpen 的 watch 方法\n @Watch('isOpen')\n async handleIsOpenChange(newValue: boolean) {\n if (newValue) {\n // 验证 employeeId 是否存在\n if (!this.employeeId) {\n console.error('未提供数字员工ID (employeeId)');\n setTimeout(() => alert('请提供有效的数字员工ID'), 0);\n return;\n }\n await verifyApiKey(this.token);\n\n // 获取智能体详情\n await this.fetchEmployeeDetails();\n }\n }\n\n\n // 确保组件卸载时释放资源\n disconnectedCallback() {\n // 组件销毁时移除事件监听器\n document.removeEventListener('pcm-token-invalid', this.tokenInvalidListener);\n\n // 清理音频录制计时器\n if (this.audioRecordingTimer) {\n clearInterval(this.audioRecordingTimer);\n this.audioRecordingTimer = null;\n }\n\n // 停止音频录制\n this.stopAudioRecording();\n\n }\n\n\n // 处理文本输入变化\n private handleTextInputChange = (event: Event) => {\n const input = event.target as HTMLTextAreaElement;\n this.textAnswer = input.value;\n };\n\n // 添加处理键盘事件的方法\n private handleKeyDown = (event: KeyboardEvent) => {\n // 如果按下的是回车键\n if (event.key === 'Enter') {\n // 如果同时按下了Ctrl键,允许换行\n if (event.ctrlKey) {\n return; // 不阻止默认行为,允许插入换行符\n } else {\n // 阻止默认的换行行为\n event.preventDefault();\n // 如果文本框不为空且不处于禁用状态,则发送消息\n if (this.textAnswer.trim() && !this.isSubmittingText && !this.isLoading &&\n !this.currentStreamingMessage) {\n this.submitTextAnswer();\n }\n }\n }\n };\n\n // 修改提交文本回答的方法\n private submitTextAnswer = async () => {\n if (!this.textAnswer.trim() || this.isSubmittingText) {\n return;\n }\n\n this.isSubmittingText = true;\n\n try {\n // 保存当前输入内容\n const textToSend = this.textAnswer;\n\n // 立即清空文本输入\n this.textAnswer = '';\n\n // 发送用户输入的文本作为查询\n await this.sendMessageToAPI(textToSend);\n } catch (error) {\n console.error('提交文本回答失败:', error);\n alert('提交回答失败,请重试');\n } finally {\n this.isSubmittingText = false;\n }\n };\n\n // 处理语音输入按钮点击\n private handleVoiceInputClick = () => {\n if (this.isRecordingAudio) {\n this.stopAudioRecording();\n } else {\n // 直接在用户交互事件处理程序中请求权限\n // 不使用 async/await,而是使用 Promise 链\n navigator.mediaDevices.getUserMedia({ audio: true })\n .then(stream => {\n // 权限已获取,开始录音\n this.startRecordingWithStream(stream);\n })\n .catch(error => {\n console.error('麦克风权限请求失败:', error);\n\n // 根据错误类型提供更具体的提示\n if (error.name === 'NotAllowedError' || error.name === 'PermissionDeniedError') {\n alert('麦克风访问被拒绝。\\n\\n在Mac上,请前往系统偏好设置 > 安全性与隐私 > 隐私 > 麦克风,确保您的浏览器已被允许访问麦克风。');\n } else {\n alert('无法访问麦克风,请确保已授予权限并且麦克风设备正常工作。');\n }\n });\n }\n };\n\n // 新方法:使用已获取的媒体流开始录音\n private startRecordingWithStream(stream: MediaStream) {\n try {\n // 检测浏览器支持的音频MIME类型\n const mimeType = this.getSupportedAudioMimeType();\n\n // 创建MediaRecorder实例\n let audioRecorder;\n try {\n audioRecorder = new MediaRecorder(stream, {\n mimeType: mimeType\n });\n } catch (e) {\n console.warn('指定的音频MIME类型不受支持,使用默认设置:', e);\n try {\n audioRecorder = new MediaRecorder(stream);\n } catch (recorderError) {\n // 停止并释放媒体流\n stream.getTracks().forEach(track => track.stop());\n console.error('无法创建音频录制器:', recorderError);\n alert('您的浏览器不支持音频录制功能');\n return;\n }\n }\n\n this.audioRecorder = audioRecorder;\n this.audioChunks = [];\n this.isRecordingAudio = true;\n this.audioRecordingStartTime = Date.now();\n this.audioRecordingTimeLeft = this.maxAudioRecordingTime;\n\n // 设置数据可用事件处理\n audioRecorder.ondataavailable = (event) => {\n if (event.data.size > 0) {\n this.audioChunks.push(event.data);\n }\n };\n\n // 设置录制停止事件处理\n audioRecorder.onstop = () => {\n // 停止并释放媒体流\n stream.getTracks().forEach(track => track.stop());\n\n // 处理录制的音频\n this.processAudioRecording();\n };\n\n // 开始录制\n audioRecorder.start(100); // 每100毫秒获取一次数据\n\n // 设置录制计时器\n this.audioRecordingTimer = setInterval(() => {\n const elapsedTime = Math.floor((Date.now() - this.audioRecordingStartTime) / 1000);\n this.audioRecordingTimeLeft = Math.max(0, this.maxAudioRecordingTime - elapsedTime);\n\n // 时间到自动停止录制\n if (this.audioRecordingTimeLeft <= 0) {\n this.stopAudioRecording();\n }\n }, 1000);\n\n } catch (error) {\n // 停止并释放媒体流\n stream.getTracks().forEach(track => track.stop());\n console.error('开始录音失败:', error);\n alert('开始录音失败,请确保麦克风设备正常工作');\n }\n }\n\n // 处理录制的音频\n private async processAudioRecording() {\n if (this.audioChunks.length === 0) {\n console.warn('没有录制到音频数据');\n return;\n }\n\n try {\n this.isConvertingAudio = true;\n\n // 创建音频Blob\n const audioType = this.getSupportedAudioMimeType() || 'audio/webm';\n const audioBlob = new Blob(this.audioChunks, { type: audioType });\n\n if (audioBlob.size === 0) {\n console.warn('录制的音频为空');\n this.isConvertingAudio = false;\n return;\n }\n\n // 创建File对象\n const fileExtension = audioType.includes('webm') ? 'webm' : 'mp3';\n const fileName = `audio_input.${fileExtension}`;\n const audioFile = new File([audioBlob], fileName, { type: audioType });\n\n // 上传音频文件\n const fileInfo = await uploadFileToBackend(audioFile, {\n }, {\n 'tags': ['audio']\n });\n\n // 调用音频转文字API\n const transcriptionText = await this.convertAudioToText(fileInfo.cos_key);\n\n // 将转录文本追加到文本框,而不是替换\n if (transcriptionText) {\n // 保存当前光标位置\n const textArea = this.hostElement.shadowRoot?.querySelector('.text-answer-input') as HTMLTextAreaElement;\n const cursorPosition = textArea?.selectionStart || this.textAnswer.length;\n\n // 在光标位置插入识别的文本\n const beforeCursor = this.textAnswer.substring(0, cursorPosition);\n const afterCursor = this.textAnswer.substring(cursorPosition);\n\n // 如果当前文本不为空且不以空格结尾,添加一个空格\n const spacer = (beforeCursor.length > 0 && !beforeCursor.endsWith(' ')) ? ' ' : '';\n\n // 更新文本\n this.textAnswer = beforeCursor + spacer + transcriptionText + afterCursor;\n\n // 设置新的光标位置\n setTimeout(() => {\n if (textArea) {\n const newPosition = cursorPosition + spacer.length + transcriptionText.length;\n textArea.focus();\n textArea.setSelectionRange(newPosition, newPosition);\n }\n }, 0);\n } else {\n console.warn('未能识别语音内容');\n alert('未能识别语音内容,请重试或直接输入文字');\n }\n } catch (error) {\n console.error('处理音频录制失败:', error);\n alert('语音识别失败,请重试');\n } finally {\n this.isConvertingAudio = false;\n this.audioChunks = [];\n }\n }\n\n // 获取支持的音频MIME类型\n private getSupportedAudioMimeType(): string {\n // 按优先级排列的音频MIME类型列表\n const mimeTypes = [\n 'audio/webm;codecs=opus',\n 'audio/webm',\n 'audio/mp4',\n 'audio/ogg;codecs=opus',\n 'audio/ogg',\n '' // 空字符串表示使用浏览器默认值\n ];\n\n // 检查MediaRecorder是否可用\n if (!window.MediaRecorder) {\n console.warn('MediaRecorder API不可用');\n return '';\n }\n\n // 检查每种MIME类型是否受支持\n for (const type of mimeTypes) {\n if (!type) return ''; // 如果是空字符串,直接返回\n\n try {\n if (MediaRecorder.isTypeSupported(type)) {\n return type;\n }\n } catch (e) {\n console.warn(`检查音频MIME类型支持时出错 ${type}:`, e);\n }\n }\n\n // 如果没有找到支持的类型,返回空字符串\n console.warn('没有找到支持的音频MIME类型,将使用浏览器默认值');\n return '';\n }\n\n // 停止录制音频\n private stopAudioRecording() {\n if (this.audioRecorder && this.isRecordingAudio) {\n this.audioRecorder.stop();\n this.isRecordingAudio = false;\n\n // 清理计时器\n if (this.audioRecordingTimer) {\n clearInterval(this.audioRecordingTimer);\n this.audioRecordingTimer = null;\n }\n }\n }\n\n // 添加处理推荐问题点击的方法\n private handleSuggestedQuestionClick = (question: string) => {\n if (this.isLoading || this.currentStreamingMessage) return;\n this.textAnswer = question;\n this.submitTextAnswer();\n };\n\n // 添加文档下载方法\n private async handleDocumentDownload(ref: Reference) {\n try {\n console.log('下载文档:', ref);\n\n // 从文档ID中提取数字部分\n const docIdMatch = ref.doc_info.doc_id.match(/docID_(\\d+)/);\n if (!docIdMatch || !docIdMatch[1]) {\n alert('无法解析文档ID');\n return;\n }\n const docId = docIdMatch[1];\n // 获取文档详细信息\n const result = await sendHttpRequest({\n url: `/sdk/v1/files/${docId}/info`,\n method: 'GET',\n });\n\n\n if (result.success && result.data?.file_url) {\n // 构建预览URL\n const baseUrl = result.data.file_url;\n const previewUrl = `${baseUrl}${baseUrl.includes('?') ? '&' : '?'}ci-process=doc-preview&copyable=1&dstType=html`;\n\n // 打开预览链接\n window.open(previewUrl, '_blank');\n } else {\n alert('获取文档链接失败');\n }\n } catch (error) {\n console.error('下载文档失败:', error);\n alert('下载文档失败,请稍后再试');\n }\n }\n\n // 添加清除对话记录的方法\n private handleClearConversation = () => {\n if (this.isLoading || this.currentStreamingMessage) return;\n\n // 触发清除对话事件,传递当前会话ID\n this.clearConversation.emit(this.conversationId);\n\n // 清空本地消息记录\n this.messages = [];\n this.currentStreamingMessage = null;\n this.conversationId = undefined;\n this.currentRefs = [];\n this.suggestedQuestions = [];\n };\n\n\n\n render() {\n if (!this.isOpen) return null;\n\n const modalStyle = {\n zIndex: String(this.zIndex)\n };\n\n const containerClass = {\n 'modal-container': true,\n 'fullscreen': this.fullscreen\n };\n\n const overlayClass = {\n 'modal-overlay': true,\n 'fullscreen-overlay': this.fullscreen\n };\n\n // 确定要显示的图标:优先使用传入的icon,如果未设置则使用智能体头像\n const displayIcon = this.icon || (this.employeeDetails?.avatar || '');\n\n // 确定要显示的标题:优先使用传入的modalTitle,如果未设置则使用智能体名称\n const displayTitle = this.modalTitle || (this.employeeDetails?.name || '在线客服');\n\n // 修改渲染引用文档组件的方法\n const renderReferences = () => {\n // 只有当没有正在流式输出的消息且有引用文档且未设置隐藏引用且showReferences为true时才显示\n if (!this.showReferences || this.currentRefs.length === 0 || this.currentStreamingMessage || this.shouldHideReferences) return null;\n\n return (\n <div class=\"references-section\">\n <h3 class=\"references-title\">引用文档</h3>\n <div class=\"references-list\">\n {this.currentRefs.map((ref, index) => (\n <div\n class=\"reference-item\"\n key={`ref-${index}`}\n onClick={() => this.handleDocumentDownload(ref)}\n >\n <div class=\"reference-header\">\n <span class=\"reference-icon\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\n <path d=\"M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z\" />\n </svg>\n </span>\n <span class=\"reference-name\">{ref.doc_info.doc_name}</span>\n <span class=\"download-icon\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\n <path d=\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\" />\n </svg>\n </span>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n };\n\n // 渲染推荐问题组件\n const renderSuggestedQuestions = () => {\n\n // 只有当没有正在流式输出的消息时才显示推荐问题\n if (!this.customInputs.show_suggested_questions && !this.currentStreamingMessage) {\n return null;\n }\n\n if (this.suggestedQuestionsLoading) {\n return (\n <div class=\"loading-suggestions\">\n <div class=\"loading-spinner-small\"></div>\n </div>\n );\n }\n\n if (this.suggestedQuestions.length === 0) return null;\n\n return (\n <div class=\"suggested-questions\">\n <h3 class=\"suggested-title\">推荐问题</h3>\n {this.suggestedQuestions.map((question, index) => (\n <div\n class=\"suggested-question\"\n key={`question-${index}`}\n onClick={() => this.handleSuggestedQuestionClick(question)}\n >\n <span>{question}</span>\n <span class=\"arrow-right\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </svg>\n </span>\n </div>\n ))}\n </div>\n );\n };\n\n // 渲染预设问题组件\n const renderQuickQuestions = () => {\n // 只有在没有会话ID且有预设问题且没有正在流式输出的消息时才显示\n if (this.conversationId || this.quickQuestions.length === 0 || this.currentStreamingMessage) return null;\n\n return (\n <div class=\"suggested-questions\">\n <h3 class=\"suggested-title\">常见问题</h3>\n {this.quickQuestions.map((question, index) => (\n <div\n class=\"suggested-question\"\n key={`preset-question-${index}`}\n onClick={() => this.handleSuggestedQuestionClick(question)}\n >\n <span>{question}</span>\n <span class=\"arrow-right\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </svg>\n </span>\n </div>\n ))}\n </div>\n );\n };\n\n // 修改文本输入区域渲染函数\n const renderTextInputArea = () => (\n <div class=\"text-input-area\">\n <textarea\n class=\"text-answer-input\"\n placeholder=\"发消息\"\n value={this.textAnswer}\n onInput={this.handleTextInputChange}\n onKeyDown={this.handleKeyDown}\n disabled={this.isRecordingAudio || this.isConvertingAudio}\n ></textarea>\n <div class=\"input-toolbar\">\n <div class=\"toolbar-actions\">\n <button\n class=\"toolbar-button\"\n title=\"清除对话记录\"\n onClick={this.handleClearConversation}\n disabled={this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage || this.messages.length === 0}\n >\n <img src=\"https://pcm-pub-1351162788.cos.ap-guangzhou.myqcloud.com/sdk/image/brush-alt-svgrepo-com.png\" alt=\"清除对话记录\" />\n </button>\n </div>\n <div class=\"toolbar-actions\">\n <button\n class={{\n 'toolbar-button': true,\n 'recording': this.isRecordingAudio,\n 'converting': this.isConvertingAudio\n }}\n title={this.isRecordingAudio ? '点击停止录音' : this.isConvertingAudio ? '正在识别语音...' : '语音输入'}\n onClick={this.handleVoiceInputClick}\n disabled={this.isConvertingAudio || this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage}\n >\n {this.isRecordingAudio ? (\n <div>\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\n <path d=\"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z\" />\n <path d=\"M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z\" />\n <circle cx=\"12\" cy=\"11\" r=\"4\" fill=\"red\" />\n </svg>\n {/* <span class=\"recording-time\">{this.audioRecordingTimeLeft}s</span> */}\n </div>\n ) : this.isConvertingAudio ? (\n <div class=\"converting-indicator\">\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\n <path d=\"M12 4V1L8 5l4 4V6c3.31 0 6 2.69 6 6 0 1.01-.25 1.97-.7 2.8l1.46 1.46C19.54 15.03 20 13.57 20 12c0-4.42-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-1.01.25-1.97.7-2.8L5.24 7.74C4.46 8.97 4 10.43 4 12c0 4.42 3.58 8 8 8v3l4-4-4-4v3z\" />\n </svg>\n </div>\n ) : (\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\">\n <path d=\"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z\" />\n <path d=\"M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z\" />\n </svg>\n )}\n </button>\n </div>\n <div\n class={{\n 'send-button': true,\n 'disabled': !this.textAnswer.trim() || this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage || this.isRecordingAudio || this.isConvertingAudio\n }}\n onClick={() => {\n if (!this.textAnswer.trim() || this.isSubmittingText || this.isLoading || !!this.currentStreamingMessage || this.isRecordingAudio || this.isConvertingAudio) {\n return;\n }\n this.submitTextAnswer();\n }}\n >\n <img src=\"https://pcm-pub-1351162788.cos.ap-guangzhou.myqcloud.com/sdk/image/i_send.png\" alt=\"发送\" />\n </div>\n </div>\n </div>\n );\n\n return (\n <div class={overlayClass} style={modalStyle}>\n <div class={containerClass}>\n {this.isShowHeader && (\n <div class=\"modal-header\">\n <div class=\"header-left\">\n {displayIcon && <img src={displayIcon} class=\"header-icon\" alt=\"应用图标\" />}\n <div>{displayTitle}</div>\n </div>\n {this.isNeedClose && (\n <button class=\"close-button\" onClick={this.handleClose}>\n <span>×</span>\n </button>\n )}\n </div>\n )}\n\n <div class=\"chat-container\">\n <div\n class=\"chat-history\"\n onScroll={this.handleScroll}\n onTouchStart={this.handleTouchStart}\n onTouchEnd={this.handleTouchEnd}\n onWheel={this.handleWheel}\n >\n {this.isLoadingHistory ? (\n <div class=\"loading-container\">\n <div class=\"loading-spinner\"></div>\n <p>加载历史消息中...</p>\n </div>\n ) : (\n <div>\n {this.messages.map((message) => (\n <div id={`message_${message.id}`} key={message.id}>\n <pcm-chat-message\n message={message}\n showFeedbackButtons={false}\n onMessageChange={(event) => {\n const updatedMessages = this.messages.map(msg =>\n msg.id === message.id ? { ...msg, ...event.detail } : msg\n );\n this.messages = updatedMessages;\n }}\n ></pcm-chat-message>\n </div>\n ))}\n {this.currentStreamingMessage && (\n <div id={`message_${this.currentStreamingMessage.id}`}>\n <pcm-chat-message\n message={this.currentStreamingMessage}\n showFeedbackButtons={false}\n ></pcm-chat-message>\n </div>\n )}\n {this.messages.length === 0 && !this.currentStreamingMessage && (\n <div class=\"empty-state\">\n {this.isLoadingEmployeeDetails ? (\n <p>加载中...</p>\n ) : this.employeeDetails?.default_greeting ? (\n <p>{this.employeeDetails.default_greeting}</p>\n ) : (\n <p>请输入...</p>\n )}\n </div>\n )}\n\n {/* 添加引用文档和推荐问题组件 */}\n {renderReferences()}\n {renderSuggestedQuestions()}\n {renderQuickQuestions()}\n </div>\n )}\n </div>\n\n <div class=\"recording-section\">\n <div class=\"recording-container\">\n {renderTextInputArea()}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}"]}
@@ -1,68 +1,68 @@
1
- .plan-type-section {
2
- display: flex;
3
- flex-direction: column;
4
- gap: 10px;
5
- margin-bottom: 20px;
6
- }
7
-
8
- .plan-type-section label {
9
- font-weight: 600;
10
- color: #333;
11
- margin-bottom: 8px;
12
- }
13
-
14
- .plan-type-options {
15
- display: flex;
16
- gap: 15px;
17
- flex-wrap: wrap;
18
- }
19
-
20
- .plan-type-option {
21
- flex: 1;
22
- min-width: 120px;
23
- border: 1px solid #e8e8e8;
24
- border-radius: 8px;
25
- padding: 15px;
26
- cursor: pointer;
27
- display: flex;
28
- flex-direction: column;
29
- align-items: center;
30
- transition: all 0.3s;
31
- }
32
-
33
- .plan-type-option:hover {
34
- border-color: #1890ff;
35
- background-color: #f0f7ff;
36
- }
37
-
38
- .plan-type-option.selected {
39
- border-color: #1890ff;
40
- background-color: #e6f7ff;
41
- box-shadow: 0 2px 8px rgba(24, 144, 255, 0.2);
42
- }
43
-
44
- .option-icon {
45
- font-size: 24px;
46
- margin-bottom: 8px;
47
- }
48
-
49
- .option-label {
50
- font-size: 14px;
51
- font-weight: 500;
52
- color: #333;
53
- }
54
-
55
- .resume-upload-section {
56
- display: flex;
57
- flex-direction: column;
58
- gap: 8px;
59
- }
60
-
61
- .resume-upload-section label {
62
- font-weight: 600;
63
- color: #333;
64
- margin-bottom: 8px;
65
- }
66
-
67
-
68
-
1
+ .plan-type-section {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 10px;
5
+ margin-bottom: 20px;
6
+ }
7
+
8
+ .plan-type-section label {
9
+ font-weight: 600;
10
+ color: #333;
11
+ margin-bottom: 8px;
12
+ }
13
+
14
+ .plan-type-options {
15
+ display: flex;
16
+ gap: 15px;
17
+ flex-wrap: wrap;
18
+ }
19
+
20
+ .plan-type-option {
21
+ flex: 1;
22
+ min-width: 120px;
23
+ border: 1px solid #e8e8e8;
24
+ border-radius: 8px;
25
+ padding: 15px;
26
+ cursor: pointer;
27
+ display: flex;
28
+ flex-direction: column;
29
+ align-items: center;
30
+ transition: all 0.3s;
31
+ }
32
+
33
+ .plan-type-option:hover {
34
+ border-color: #1890ff;
35
+ background-color: #f0f7ff;
36
+ }
37
+
38
+ .plan-type-option.selected {
39
+ border-color: #1890ff;
40
+ background-color: #e6f7ff;
41
+ box-shadow: 0 2px 8px rgba(24, 144, 255, 0.2);
42
+ }
43
+
44
+ .option-icon {
45
+ font-size: 24px;
46
+ margin-bottom: 8px;
47
+ }
48
+
49
+ .option-label {
50
+ font-size: 14px;
51
+ font-weight: 500;
52
+ color: #333;
53
+ }
54
+
55
+ .resume-upload-section {
56
+ display: flex;
57
+ flex-direction: column;
58
+ gap: 8px;
59
+ }
60
+
61
+ .resume-upload-section label {
62
+ font-weight: 600;
63
+ color: #333;
64
+ margin-bottom: 8px;
65
+ }
66
+
67
+
68
+
@@ -503,7 +503,7 @@ export class ZyghModal {
503
503
  "optional": false,
504
504
  "docs": {
505
505
  "tags": [],
506
- "text": "\u81EA\u5B9A\u4E49\u8F93\u5165\u53C2\u6570\uFF0C\u4F20\u5165customInputs.type\u5219\u53EF\u4EE5\u6307\u5B9A\u89C4\u5212\u7C7B\u578B\uFF0C\u53EF\u4F20\u5165\"\u957F\u671F\u89C4\u5212\"\u3001\"\u8F6C\u884C\u5EFA\u8BAE\"\u3001\"\u664B\u5347\u8DEF\u5F84\"<br>\r\n\u4F20\u5165customInputs.file_url\u65F6\uFF0C\u4F1A\u9690\u85CF\u7B80\u5386\u4E0A\u4F20\u533A\u57DF\u3002<br>\r\n\u4F20\u5165customInputs.file_url\u548CcustomInputs.job_info\u65F6\uFF0C\u4F1A\u76F4\u63A5\u5F00\u59CB\u804A\u5929\u3002<br>"
506
+ "text": "\u81EA\u5B9A\u4E49\u8F93\u5165\u53C2\u6570\uFF0C\u4F20\u5165customInputs.type\u5219\u53EF\u4EE5\u6307\u5B9A\u89C4\u5212\u7C7B\u578B\uFF0C\u53EF\u4F20\u5165\"\u957F\u671F\u89C4\u5212\"\u3001\"\u8F6C\u884C\u5EFA\u8BAE\"\u3001\"\u664B\u5347\u8DEF\u5F84\"<br>\n\u4F20\u5165customInputs.file_url\u65F6\uFF0C\u4F1A\u9690\u85CF\u7B80\u5386\u4E0A\u4F20\u533A\u57DF\u3002<br>\n\u4F20\u5165customInputs.file_url\u548CcustomInputs.job_info\u65F6\uFF0C\u4F1A\u76F4\u63A5\u5F00\u59CB\u804A\u5929\u3002<br>"
507
507
  },
508
508
  "getter": false,
509
509
  "setter": false,
@@ -542,7 +542,7 @@ export class ZyghModal {
542
542
  "optional": false,
543
543
  "docs": {
544
544
  "tags": [],
545
- "text": "\u9644\u4EF6\u9884\u89C8\u6A21\u5F0F\r\n'drawer': \u5728\u53F3\u4FA7\u62BD\u5C49\u4E2D\u9884\u89C8\r\n'window': \u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00"
545
+ "text": "\u9644\u4EF6\u9884\u89C8\u6A21\u5F0F\n'drawer': \u5728\u53F3\u4FA7\u62BD\u5C49\u4E2D\u9884\u89C8\n'window': \u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00"
546
546
  },
547
547
  "getter": false,
548
548
  "setter": false,
@@ -651,12 +651,12 @@ export class ZyghModal {
651
651
  "text": "\u5F53\u804A\u5929\u5B8C\u6210\u65F6\u89E6\u53D1"
652
652
  },
653
653
  "complexType": {
654
- "original": "{\r\n conversation_id: string;\r\n type: CareerPlanType;\r\n }",
654
+ "original": "{\n conversation_id: string;\n type: CareerPlanType;\n }",
655
655
  "resolved": "{ conversation_id: string; type: CareerPlanType; }",
656
656
  "references": {
657
657
  "CareerPlanType": {
658
658
  "location": "local",
659
- "path": "D:/code/agents-sdk/packages/pcm-agents/src/components/pcm-zygh-modal/pcm-zygh-modal.tsx",
659
+ "path": "/Users/debugksir/Documents/pcm/sdk/packages/pcm-agents/src/components/pcm-zygh-modal/pcm-zygh-modal.tsx",
660
660
  "id": "src/components/pcm-zygh-modal/pcm-zygh-modal.tsx::CareerPlanType"
661
661
  }
662
662
  }