微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RTM:ERROR 错误代码 102:sendMessage 失败,参数为:{"messageType":"TEXT"}

如何解决RTM:ERROR 错误代码 102:sendMessage 失败,参数为:{"messageType":"TEXT"}

我正在使用 Agora RTM WebSDK 的频道消息开发聊天服务。我想调用 sendMessage 方法并在按下发送按钮时发送输入消息(ID 为“消息”的输入元素)。但是,当调用sendMessage 方法时,发生了RTM 错误并且sendMessage 方法不起作用。我确认生成了令牌并且登录成功。脚本和错误如下。

<template>
    <div>
        <table class="comment-sender-Box">
            <tr>
                <td colspan="3">
                    <textarea id="chatBox" rows="4" cols="40">{{ messages }}</textarea>
                </td>
            </tr>
            <tr>
                <td colspan="2" class="message-wrapper">
                    <input id="message" v-model="message">
                </td>
                <td class="btnSendMessage-wrapper">
                    <button id="btnSendMessage">
                        <font-awesome-icon icon="paper-plane" />
                    </button>
                </td>            
            </tr>
        </table>
        
    </div>
</template>

<script>
    import Vue from 'vue';
    import {RtcTokenBuilder,RtmTokenBuilder,RtcRole,RtmRole} from 'agora-access-token';
    import AgoraRTM from 'agora-rtm-sdk';
    import { library } from '@fortawesome/fontawesome-svg-core';
    import { fas } from '@fortawesome/free-solid-svg-icons';
    import { fab } from '@fortawesome/free-brands-svg-icons';
    import { far } from '@fortawesome/free-regular-svg-icons';
    import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
    library.add(fas,far,fab);
    Vue.component('font-awesome-icon',FontAwesomeIcon);

    export default Vue.extend({
        data: {
            name: '',messages: '',message: ''
        },async created() {
            this.name = this.$route.query.user;
            var user_id = this.name;
            const appID = "**********";
            const channelName = "**********";

            const chat_token = await function(){
                const appCertificate = "**********";
                const role = RtmRole.Rtm_User;
                const expirationTimeInSeconds = 36000;
                const currentTimestamp = Math.floor(Date.Now() / 1000);
                const privilegeExpiredTs = currentTimestamp + expirationTimeInSeconds;
                const token = RtmTokenBuilder.buildToken(appID,appCertificate,user_id,role,privilegeExpiredTs);
                console.log("RTM Token : " + token);
                return token
            };

            const chat_client = AgoraRTM.createInstance(appID);
            chat_client.on('ConnectionStateChanged',(newState,reason) => {
                console.log('on connection state changed to ' + newState + ' reason: ' + reason);
            });
            chat_client.login({ token: chat_token(),uid: user_id }).then(() => {
                console.log('AgoraRTM client login success');
            }).catch(err => {
                console.log('AgoraRTM client login failure',err);
            });
            const chat_channel = chat_client.createChannel(channelName);
            chat_channel.join().then(() => {}).catch(error => {});
            chat_channel.on('ChannelMessage',({ text },senderId) => {
                this.messages = this.messages + "\n" + text;
            });

            document.getElementById("btnSendMessage").addEventListener("click",()=>{
                chat_channel.sendMessage({text: 'test message'}).then(() => {
                    this.messages = this.messages + "\n" + this.message;
                }).catch(error => {});
            })
        }
    })

</script>
RTM:ERROR Error Code 102: sendMessage Failed with args: {"messageType":"TEXT"}.

解决方法

根据官方文档:Check here

错误代码102

建议

开始发送频道消息时登录操作未完成。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。