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

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

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

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

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

簡介

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

demo

接口和屬性列表

接口列表

接口參數(shù)功能
setTyping(isTyping)isTyping:布爾值顯示/隱藏消息加載動畫
postMessage(msg,clearInput)msg:[ChatMessage]類型 clearInput: boolean類型。在對話界面中顯示消息 指示展示消息時是否清空輸入框內(nèi)容,默認清除。
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默認歡迎語。string類型
botMessageBackgroundColorchatbot消息的背景顏色。string類型
botMessageTextColorchatbot消息的文本顏色。string類型
userMessageBackgroundColor用戶消息的背景顏色。string類型
userMessageTextColor用戶消息的文本顏色。string類型
messageFontSize消息文本的字體大小。number類型
needBackButton是否顯示頂部返回按鈕。點擊返回導(dǎo)航上一頁。boolean類型
needInputControl是否需要底部輸入?yún)^(qū)域。 boolean類型
InputControl底部輸入?yún)^(qū)域,@BuilderParams類型。該區(qū)域可自定義為你自己的布局
controller自定義輸入控制器,自定義輸入?yún)^(qū)時必填。[ChatController]類型
backIcon返回按鈕圖標(biāo)。Resource類型
clearChatIcon清楚聊天按鈕圖標(biāo)。Resource類型
submitButtonText提交消息按鈕文本。string類型
inputTextPlaceHolder輸入框提示文本。string類型
inputTextPlaceHolderColor輸入框提示文本的顏色。string類型
inputTextColor輸入文本的顏色。string類型
needSubmitButton是否顯示提交消息按鈕。boolean類型

使用示例

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

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

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

深度定制聊天UI。替換輸入?yún)^(qū)域為你自己的輸入組件,替換頭像,文本顏色等。

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: '我是你的測試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ù)等待動畫
            ctl.setTyping(true)
            //3秒后發(fā)送chatbot響應(yīng)消息
            setTimeout(() = > {
              ctl.postMessage(new ChatMessage(ChatRole.Assistant, '這是一條測試回復(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ù)對象
    if(params) {
      this.needBackButton = params['needBackButton']
    }
  }
}

審核編輯 黃宇

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

    關(guān)注

    57

    文章

    2287

    瀏覽量

    42629
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1954

    瀏覽量

    29897
收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

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

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

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

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

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

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

    純血鴻蒙系統(tǒng),拿什么與安卓、iOS比?

    、數(shù)碼、車載等等一系列生態(tài)閉環(huán)。 而華為鴻蒙是全棧自研底座,從AI大模型、AI框架、安全隱私、集成開發(fā)環(huán)境、設(shè)計系統(tǒng)、編程框體、編譯器、編程語言和文件系統(tǒng),到操作系統(tǒng)內(nèi)核。去掉了傳統(tǒng)
    發(fā)表于 02-21 21:04

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

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

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

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

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡ArkTS相互操作(一)

    ArkTS 運行時接口,為用戶提供庫級別的 ArkTS 互操作能力。一、使用場景: 1.在 ArkTS 應(yīng)用開發(fā)倉頡模塊:把用戶倉頡代碼封裝成為
    發(fā)表于 07-31 17:43

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

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

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

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

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

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

    OpenHarmony 應(yīng)用開發(fā)SDK、API 與基礎(chǔ)工具

    一、整體說明 ArkTS 語言是鴻蒙系統(tǒng)主推的應(yīng)用開發(fā)語言。因此鴻蒙系統(tǒng)提供給開發(fā)者的 API 絕大部分也是
    發(fā)表于 09-19 15:45

    鴻蒙 OS 應(yīng)用開發(fā)初體驗

    工具包 ArkTS鴻蒙生態(tài)的應(yīng)用開發(fā)語言。 JS:JavaScript Previewer:預(yù)覽器 Toolchains:工具鏈 Create Project 配置工程 項目名稱、包名、存儲路徑、編譯
    發(fā)表于 11-02 19:38

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

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