網(wǎng)易云信-新增自定義消息(H5移動(dòng)版)

前言

公司業(yè)務(wù)需要,PC端,移動(dòng)端都用到了第三方 網(wǎng)易云信 IM 來(lái)實(shí)現(xiàn)在線客服咨詢。
在這當(dāng)中難免遇到一些需求是網(wǎng)易云信沒(méi)有提供领猾,需要自行編碼進(jìn)行擴(kuò)展的。寫(xiě)此篇文章的目的正是因業(yè)務(wù)需要骇扇,需要在網(wǎng)易云信的基礎(chǔ)上進(jìn)行消息類型的擴(kuò)展摔竿。

此篇文章里的代碼是基于 網(wǎng)易云信 NIM_Web_Demo_H5 進(jìn)行修改的

如下圖所示的消息類型

帶圖片和文字,并且可點(diǎn)擊的消息類型

標(biāo)題是H5移動(dòng)版少孝,可想而知继低,肯定還有其他如 iOS版,Android版等稍走,不可能此類型的消息(我稱它為圖文消息)只支持Web袁翁,而在iOS或Android端無(wú)法顯示問(wèn)題。以下附上其他版本擴(kuò)展的鏈接婿脸,H5移動(dòng)版和 Web版 很相似粱胜,因?yàn)槎际鞘褂猛粋€(gè)sdk)


正文

  1. 將github上的工程 git clone 或者下載到本地

node環(huán)境工程部署,將工程克隆到本地狐树,使用靜態(tài)服務(wù)啟動(dòng)本工程焙压。

  1. npm install
  2. npm run server
  3. 在瀏覽器中訪問(wèn)
    http://127.0.0.1:2001
  1. 運(yùn)行沒(méi)有問(wèn)題后,修改文件配置 config.js 中的 appKey ,將demo修改為自己所用涯曲。
//...
let appConfig = {
    // 用戶的appkey
    // 用于在web demo中注冊(cè)賬號(hào)異步請(qǐng)求demo 服務(wù)器中使用
    test: {
        appkey: '填入自己的appkey',
        postUrl: 'https://apptest.netease.im'
    },
    online: {
        appkey: '填入自己的appkey',
        postUrl: 'https://app.netease.im'
    }
};
//...
  1. 添加觸發(fā)自定義消息發(fā)送功能野哭,主要用于我們開(kāi)發(fā)調(diào)試。

這個(gè)功能主要用于我們給網(wǎng)站用戶發(fā)送促銷或活動(dòng)等使用幻件,圖文鏈接消息的發(fā)送功能不開(kāi)放給用戶拨黔。下圖給出示例圖,當(dāng)用戶點(diǎn)擊咨詢時(shí)傲武,我們自動(dòng)給他回復(fù)一條圖文鏈接消息蓉驹。

用戶點(diǎn)擊首頁(yè)上的咨詢時(shí)城榛,自動(dòng)發(fā)送一條圖文鏈接消息

編輯 ChatEditor.vue揪利,在sendTextMsg函數(shù)中添加如下代碼,正式上線后狠持,此處應(yīng)該注釋掉疟位。

點(diǎn)擊我傳送

if (/^\s*$/.test(this.msgToSent)) {
    this.$vux.alert.show({
        title: '請(qǐng)不要刷屏'
    });
    return;
// 添加以下代碼是用來(lái)開(kāi)發(fā)調(diào)試發(fā)送自定義的消息類型,當(dāng)發(fā)送 custom 給對(duì)方時(shí)進(jìn)入該邏輯
} else if (this.msgToSent == 'custom') {
    let content = {
        type: 5, // 自定義消息類型為5喘垂,此處的消息類型必須和其他平臺(tái)的圖文消息類型一致
        data: {
            title: '暖冬季歡樂(lè)送', // 消息標(biāo)題
            describe: '家具滿1000元減100元再返100元現(xiàn)金券甜刻!點(diǎn)擊查看詳情!', // 消息描述
            link_url: 'http://www.reibang.com/p/dadd344b6413', // 點(diǎn)擊跳轉(zhuǎn)的URL
            image_url: 'https://netease.im/res/image/download/section1.png?v=002' // 消息中的圖片地址
        }
    };
    this.$store.dispatch('sendMsg', {
        type: 'custom',
        scene: this.scene,
        to: this.to,
        pushContent: this.pushContent,
        content: content
    });
    return;
} else if (this.msgToSent.length > 800) {
    //...
}

如上操作完成后正勒,重新 npm run start得院,然后嘗試發(fā)送 custom 給對(duì)方時(shí)顯示如下。

輸入框輸入 custom 點(diǎn)擊發(fā)送按鈕章贞, 觸發(fā)上面的條件

顯示[自定義消息]祥绞,這個(gè)不是我們所期待的,所以接下在添加代碼使其顯示正常

  1. 自定義消息的顯示
    自定義消息類型的顯示在 ChatItem.vuebeforeMount 函數(shù)中處理鸭限,添加如下代碼

點(diǎn)我傳送

// 此處省略前面代碼
} else if (content.type === 3) {
    // ......
    // type 5 為圖文鏈接消息
} else if (content.type === 5) {
    let obj = content.data;
    item.showText = `<a class="imgtxt" href=${obj.link_url} target="_blank">`;
    item.showText += `<div class="imgtxt-title">${obj.title}</div>`;
    if (obj.image_url && obj.image_url.trim() != '') {
        item.showText += `<img class="imgtxt-img" src=${obj.image_url} />`;
    }
    if (obj.describe && obj.describe.trim() != '') {
        item.showText += `<div class="imgtxt-describe">${obj.describe}</div>`;
    }
    item.showText += `</a>`;
} else {
    item.showText = util.parseCustomMsg(item);
    if (item.showText !== '[自定義消息]') {
        item.showText += ',請(qǐng)到手機(jī)或電腦客戶端查看';
    }
} else if (item.type === 'image') {
    //...
}

上面添加后蜕径,還需在 unit.css.u-msg 里添加對(duì)應(yīng)的樣式屬性,代碼如下

點(diǎn)我傳送

.button {
    margin: 0.1rem 0;
    padding: 0.1rem 0.2rem;
    border: 1px solid #fff;
    border-radius: 0.2rem;
    background-color: $color_nav_active_background;
    color: #666;
}
// 從這開(kāi)始
.imgtxt {
    width: 100%;
    display: -webkit-box;
    display: -webkit-flex;
    display: -moz-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -moz-box-orient: vertical;
    -moz-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
    background-color: #fff;
    .imgtxt-title {
        color: #333;
        line-height: 24px;
        font-size: 14px;
        font-weight: bold;
        word-break: break-all;
        text-overflow: ellipsis;
        overflow: hidden;
        display: -webkit-box;
        -moz-line-clamp: 1;
        -webkit-line-clamp: 1;
        -moz-box-orient: vertical;
        -webkit-box-orient: vertical;
        padding: 5px 15px;
    }
    .imgtxt-img {
        border-top: 1px #e6e6e6 solid;
        border-bottom: 1px #e6e6e6 solid;
        margin: 0 15px;
        max-width: 100% !important;
        max-height: 160px !important;
        vertical-align: bottom;
    }
    .imgtxt-describe {
        color: #666;
        font-size: 12px;
        text-align: left;
        word-break: break-all;
        text-overflow: ellipsis;
        overflow: hidden;
        display: -webkit-box;
        -moz-line-clamp: 3;
        -webkit-line-clamp: 3;
        -moz-box-orient: vertical;
        -webkit-box-orient: vertical;
        padding: 5px 15px;
    }
}

以上操作完成后败京,重新運(yùn)行 npm run start兜喻,然后測(cè)試。

注釋上面ChatEditor.vue中的content對(duì)象中的 image_url, describe 可以測(cè)試發(fā)送如上消息

尾篇

到此赡麦,云信H5移動(dòng)端的擴(kuò)展自定義消息已經(jīng)完成朴皆。當(dāng)然,這只是Web H5的顯示正常了泛粹,其他如Android车荔,iOS,pc等客戶端收到此類的消息戚扳,顯示有問(wèn)題忧便,也是需要擴(kuò)展調(diào)整的。此篇文章其他端的文章我會(huì)陸續(xù)更新,如果有需要的同學(xué)可以關(guān)注下珠增。

以下附上其他版本擴(kuò)展的鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末超歌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蒂教,更是在濱河造成了極大的恐慌巍举,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凝垛,死亡現(xiàn)場(chǎng)離奇詭異懊悯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)梦皮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門炭分,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人剑肯,你說(shuō)我怎么就攤上這事捧毛。” “怎么了让网?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵呀忧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我溃睹,道長(zhǎng)而账,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任因篇,我火速辦了婚禮泞辐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惜犀。我一直安慰自己铛碑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布虽界。 她就那樣靜靜地躺著汽烦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莉御。 梳的紋絲不亂的頭發(fā)上撇吞,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音礁叔,去河邊找鬼牍颈。 笑死,一個(gè)胖子當(dāng)著我的面吹牛琅关,可吹牛的內(nèi)容都是我干的煮岁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼画机!你這毒婦竟也來(lái)了冶伞?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤步氏,失蹤者是張志新(化名)和其女友劉穎响禽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體荚醒,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芋类,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了界阁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侯繁。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铺董,靈堂內(nèi)的尸體忽然破棺而出巫击,到底是詐尸還是另有隱情禀晓,我是刑警寧澤精续,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站粹懒,受9級(jí)特大地震影響重付,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凫乖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一确垫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帽芽,春花似錦删掀、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至搬瑰,卻和暖如春款票,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泽论。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工艾少, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人翼悴。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓缚够,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谍椅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,744評(píng)論 25 707
  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,693評(píng)論 0 15
  • 前言 公司業(yè)務(wù)需要陶冷,PC端,移動(dòng)端都用到了第三方 網(wǎng)易云信 IM 來(lái)實(shí)現(xiàn)在線客服咨詢毯辅。在這當(dāng)中難免遇到一些需求是網(wǎng)...
    醉生夢(mèng)死閱讀 4,884評(píng)論 3 3
  • 前言 公司業(yè)務(wù)需要埂伦,PC端,移動(dòng)端都用到了第三方 網(wǎng)易云信 IM 來(lái)實(shí)現(xiàn)在線客服咨詢思恐。在這當(dāng)中難免遇到一些需求是網(wǎng)...
    醉生夢(mèng)死閱讀 6,350評(píng)論 1 4
  • 森林深處有個(gè)神秘的晚安小鎮(zhèn)沾谜,高大濃密的樹(shù)木成了小鎮(zhèn)的天然屏障,沒(méi)有人可以發(fā)現(xiàn)這個(gè)藏在深處的秘密樂(lè)園胀莹。 小鎮(zhèn)的鎮(zhèn)長(zhǎng)是...
    洋蔥絲閱讀 501評(píng)論 7 3