0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙實(shí)戰(zhàn)開發(fā)ArkTS運(yùn)用:【ai聊天框】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-08 15:38 ? 次閱讀

簡(jiǎn)介

用一個(gè)ArkTS編寫的HarmonyOS原生聊天UI框架,提供了開箱即用的聊天對(duì)話組件。

demo

接口和屬性列表

接口列表

接口參數(shù)功能
setTyping(isTyping)isTyping:布爾值顯示/隱藏消息加載動(dòng)畫
postMessage(msg,clearInput)msg:[ChatMessage]類型 clearInput: boolean類型。在對(duì)話界面中顯示消息 指示展示消息時(shí)是否清空輸入框內(nèi)容,默認(rèn)清除。
submitUserInput(userIputText)userIputText:string類型。觸發(fā)Chat組件用戶發(fā)送消息事件

屬性列表

屬性描述
messages聊天消息列表,[IChatDataSource]類型。支持懶加載顯示的數(shù)據(jù)源
botAvatarchatbot頭像(可選)。Resource類型
userAvatar我的頭像(可選)。Resource類型
title標(biāo)題欄標(biāo)題。string類型
needTitleBar是否顯示標(biāo)題欄。boolean類型
welcomeMessagechatbot默認(rèn)歡迎語。string類型
botMessageBackgroundColorchatbot消息的背景顏色。string類型
botMessageTextColorchatbot消息的文本顏色。string類型
userMessageBackgroundColor用戶消息的背景顏色。string類型
userMessageTextColor用戶消息的文本顏色。string類型
messageFontSize消息文本的字體大小。number類型
needBackButton是否顯示頂部返回按鈕。點(diǎn)擊返回導(dǎo)航上一頁(yè)。boolean類型
needInputControl是否需要底部輸入?yún)^(qū)域。 boolean類型
InputControl底部輸入?yún)^(qū)域,@BuilderParams類型。該區(qū)域可自定義為你自己的布局
controller自定義輸入控制器,自定義輸入?yún)^(qū)時(shí)必填。[ChatController]類型
backIcon返回按鈕圖標(biāo)。Resource類型
clearChatIcon清楚聊天按鈕圖標(biāo)。Resource類型
submitButtonText提交消息按鈕文本。string類型
inputTextPlaceHolder輸入框提示文本。string類型
inputTextPlaceHolderColor輸入框提示文本的顏色。string類型
inputTextColor輸入文本的顏色。string類型
needSubmitButton是否顯示提交消息按鈕。boolean類型

使用示例

這里演示簡(jiǎn)單的調(diào)用ChatUI組件

import { Chat, ChatRole, ChatMessage } from '@changwei/chatui'

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        Chat({
          title:'demo chatbot',
          welcomeMessage: '我是你的測(cè)試bot',
          onSendMessage: (ctl, message) = > {
            //發(fā)送用戶消息
            ctl.postMessage(message)
            //顯示回復(fù)等待動(dòng)畫
            ctl.setTyping(true)
            //3秒后發(fā)送chatbot響應(yīng)消息
            setTimeout(() = > {
              ctl.postMessage(new ChatMessage(ChatRole.Assistant, '這是一條測(cè)試回復(fù)'))
            }, 3000)
          }
        })
      }
    }
    .height('100%')
  }
}

深度定制聊天UI。替換輸入?yún)^(qū)域?yàn)槟阕约旱妮斎虢M件,替換頭像,文本顏色等。

import { Chat, ChatRole, ChatMessage } from '@changwei/chatui'
import { ChatController } from '@changwei/chatui'
import router from '@ohos.router';

@Entry
@Component
struct CustomInput {
  @State userInput: string = ''
  @State needBackButton: boolean = false
  chatController = new ChatController()

  build() {
    Row() {
      Column() {
        Chat({
          title: 'demo chatbot',
          needTitleBar: true,
          welcomeMessage: '我是你的測(cè)試bot',
          botMessageBackgroundColor: Color.Brown,
          botMessageTextColor: Color.White,
          userMessageBackgroundColor: Color.Green,
          userMessageTextColor: Color.White,
          botAvatar:$r('app.media.chat'),
          messageFontSize: 20,
          userInput: this.userInput,
          controller: this.chatController,
          needBackButton:this.needBackButton,
          onSendMessage: (ctl, message) = > {
            //發(fā)送用戶消息
            ctl.postMessage(message)
            this.userInput = ''
            //顯示回復(fù)等待動(dòng)畫
            ctl.setTyping(true)
            //3秒后發(fā)送chatbot響應(yīng)消息
            setTimeout(() = > {
              ctl.postMessage(new ChatMessage(ChatRole.Assistant, '這是一條測(cè)試回復(fù)'),false)
            }, 3000)
          }
        })
        {
          Row() {
            Button() {
              Image($r('app.media.app_icon'))
            }
            .backgroundColor('#')
            .height('40')
            .width('40')
            .margin(5)

            TextInput({
              text: this.userInput
            })
              .enterKeyType(EnterKeyType.Send)
              .fontColor(Color.White)
              .backgroundColor(Color.Blue)
              .width('80%')
              .onChange((val) = > {
                this.userInput = val
              })
              .onSubmit((ss) = > {
                this.chatController.submitUserInput(this.userInput)
              })

          }
        }

      }
    }
    .height('100%')
  }

  aboutToAppear() {
    const params = router.getParams(); // 獲取傳遞過來的參數(shù)對(duì)象
    if(params) {
      this.needBackButton = params['needBackButton']
    }
  }
}

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2302

    瀏覽量

    42689
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1966

    瀏覽量

    29962
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙OS開發(fā)實(shí)戰(zhàn):【ArkTS 實(shí)現(xiàn)MQTT協(xié)議(2)】

    1. 協(xié)議傳輸通道僅為TCPSocket 2. 基于HarmonyOS SDK API 9開發(fā) 3. 開發(fā)語言:ArkTS,TypeScript
    的頭像 發(fā)表于 04-01 14:48 ?1411次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b>:【<b class='flag-5'>ArkTS</b> 實(shí)現(xiàn)MQTT協(xié)議(2)】

    鴻蒙基礎(chǔ)開發(fā)實(shí)戰(zhàn)-(ArkTS)像素轉(zhuǎn)換

    的使用。通過像素轉(zhuǎn)換案例,向開發(fā)者講解了如何使用像素單位設(shè)置組件的尺寸、字體的大小以及不同像素單位之間的轉(zhuǎn)換方法。更多鴻蒙4.0的學(xué)習(xí),可以前往主頁(yè)學(xué)習(xí)或前往《鴻蒙4.0開發(fā)學(xué)習(xí)目錄》
    發(fā)表于 01-11 16:53

    鴻蒙入門實(shí)戰(zhàn)-ArkTS開發(fā)

    聲明式UI基本概念 應(yīng)用界面是由一個(gè)個(gè)頁(yè)面組成,ArkTS是由ArkUI框架提供,用于以聲明式開發(fā)范式開發(fā)界面的語言。 聲明式UI構(gòu)建頁(yè)面的過程,其實(shí)是組合組件的過程,聲明式UI的思想,主要體現(xiàn)在
    發(fā)表于 01-16 17:27

    1月18號(hào)“純鴻蒙”千帆啟航,程序員預(yù)備!

    4.0&next文檔)其中內(nèi)容包含: 《鴻蒙開發(fā)基礎(chǔ)》 1.ArkTS語言 2.安裝DevEco Studio 3.運(yùn)用你的第一個(gè)ArkTS
    發(fā)表于 01-16 22:13

    鴻蒙語言ArkTS(更好的生產(chǎn)力與性能)

    ArkTS鴻蒙生態(tài)的應(yīng)用開發(fā)語言 ArkTS提供了聲明式UI范式、狀態(tài)管理支持等相應(yīng)的能力,讓開發(fā)者可以以更簡(jiǎn)潔、更自然的方式
    發(fā)表于 02-17 15:56

    鴻蒙這么大聲勢(shì),為何遲遲看不見崗位?最新數(shù)據(jù)來了

    基礎(chǔ)》 ArkTS語言 安裝DevEco Studio 運(yùn)用你的第一個(gè)ArkTS應(yīng)用 ArkUI聲明式UI開發(fā) .…… 《鴻蒙
    發(fā)表于 02-29 20:53

    鴻蒙實(shí)戰(zhàn)項(xiàng)目開發(fā):【短信服務(wù)】

    環(huán)境搭建 ? 《鴻蒙開發(fā)基礎(chǔ)》 ArkTS語言 安裝DevEco Studio 運(yùn)用你的第一個(gè)ArkTS應(yīng)用 ArkUI聲明式UI
    發(fā)表于 03-03 21:29

    鴻蒙Flutter實(shí)戰(zhàn):05-使用第三方插件

    # 鴻蒙Flutter 實(shí)戰(zhàn):使用第三方插件 在鴻蒙Flutter開發(fā)中,如果涉及到使用原生功能,就要使用插件。使用插件有兩種方式,一種是自己編寫原生
    發(fā)表于 10-22 21:54

    鴻蒙Flutter實(shí)戰(zhàn):06-使用ArkTs開發(fā)Flutter鴻蒙插件

    # 使用 ArkTs 開發(fā) Flutter 鴻蒙平臺(tái)插件 本文講述如何開發(fā)一個(gè) Flutter 鴻蒙插件,如何實(shí)現(xiàn) Flutter 與
    發(fā)表于 10-22 21:56

    鴻蒙Flutter實(shí)戰(zhàn):07混合開發(fā)

    # 鴻蒙Flutter實(shí)戰(zhàn):混合開發(fā) 鴻蒙Flutter混合開發(fā)主要有兩種形式。 ## 1.基于har 將flutter module
    發(fā)表于 10-23 16:00

    鴻蒙Flutter實(shí)戰(zhàn):08-如何調(diào)試代碼

    # 鴻蒙Flutter實(shí)戰(zhàn):如何調(diào)試代碼 ## 1.環(huán)境搭建 參考文章[鴻蒙Flutter實(shí)戰(zhàn):01-搭建開發(fā)環(huán)境](https://g
    發(fā)表于 10-23 16:29

    瘋殼AI語音及開發(fā)實(shí)戰(zhàn)教程 Ⅲ 開發(fā)實(shí)戰(zhàn)

    瘋殼AI語音及開發(fā)實(shí)戰(zhàn)教程 Ⅲ 開發(fā)實(shí)戰(zhàn)
    發(fā)表于 11-05 16:54

    鴻蒙開發(fā)AI應(yīng)用(匯總)連載中

    `1. 用鴻蒙開發(fā)AI應(yīng)用(一)硬件篇本篇介紹了開發(fā)板Hi3516DV300的硬件資料,包括開箱組裝、各主板介紹、芯片手冊(cè)等等...2. 用鴻蒙
    發(fā)表于 01-13 15:03

    如何實(shí)現(xiàn)HarmonyOS Java端的氣泡聊天?

      HarmonyOSJava端的氣泡聊天怎么實(shí)現(xiàn)?android上有9圖可實(shí)現(xiàn)?鴻蒙上有什么類似的方案沒?
    發(fā)表于 06-13 09:59

    鴻蒙開發(fā)ArkTS基礎(chǔ)知識(shí)

    一、ArkTS簡(jiǎn)介 ArkTS是HarmonyOS優(yōu)選的主力應(yīng)用開發(fā)語言。它在TypeScript(簡(jiǎn)稱TS)的基礎(chǔ)上,匹配了鴻蒙的ArkUI框架,擴(kuò)展了聲明式UI、狀態(tài)管理等相應(yīng)的能
    的頭像 發(fā)表于 01-24 16:44 ?2074次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>之<b class='flag-5'>ArkTS</b>基礎(chǔ)知識(shí)