index.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <div class="message-custom">
  3. <MessageRating
  4. v-if="isMessageRating(props.message)"
  5. :message="props.message"
  6. @sendMessage="sendCustomMessage"
  7. />
  8. <MessageCustomerService
  9. v-else-if="isCustomerServiceMessage(props.message)"
  10. :message="props.message"
  11. @sendMessage="sendTextMessage"
  12. />
  13. </div>
  14. </template>
  15. <script lang="ts">
  16. import TUICore, { TUIConstants } from '@tencentcloud/tui-core';
  17. import { isCustomerServiceMessage, isMessageRating } from './utils/index';
  18. import { CustomMessagePayload, TextMessagePayload, IMessageModel } from './interface';
  19. import MessageCustomerService from './components/message-customer-service.vue';
  20. import MessageRating from './components/message-rating/index.vue';
  21. interface Props {
  22. message: IMessageModel;
  23. }
  24. export default {
  25. components: {
  26. MessageCustomerService,
  27. MessageRating,
  28. },
  29. props: {
  30. message: {
  31. type: Object as () => IMessageModel,
  32. default: () => ({}),
  33. },
  34. },
  35. setup(props: Props) {
  36. const sendTextMessage = (payload: TextMessagePayload) => {
  37. TUICore.callService({
  38. serviceName: TUIConstants.TUIChat.SERVICE.NAME,
  39. method: TUIConstants.TUIChat.SERVICE.METHOD.SEND_TEXT_MESSAGE,
  40. params: { payload },
  41. });
  42. };
  43. const sendCustomMessage = (payload: CustomMessagePayload) => {
  44. TUICore.callService({
  45. serviceName: TUIConstants.TUIChat.SERVICE.NAME,
  46. method: TUIConstants.TUIChat.SERVICE.METHOD.SEND_CUSTOM_MESSAGE,
  47. params: { payload },
  48. });
  49. };
  50. return {
  51. props,
  52. sendTextMessage,
  53. sendCustomMessage,
  54. isCustomerServiceMessage,
  55. isMessageRating,
  56. };
  57. },
  58. };
  59. </script>