2017-06-30 41 views
0

当试图加入我一直在使用的twilio代码中的一个频道时,它出现错误,指出它“无法读取属性'getChannelByUniqueName'为null”。该聊天工作,但当我试图打开它在不同的浏览器,如Firefox而不是铬,它说错误“提供唯一名称的渠道已经存在”。任何人都可以解决这个问题吗?无法加入聊天频道

// Initialize the Chat client 
 
    chatClient = new Twilio.Chat.Client(data.token); 
 
    joinChannels(chatClient); 
 
    }); 
 

 
    function joinChannels(chatClient) { 
 
    chatClient.getSubscribedChannels(); 
 
    joinChannel('generalss','Generals Chat Channel'); 
 
    } 
 

 
    function joinChannel(channelName, channelFriendlyName) { 
 
    console.log(channelName); 
 
    console.log(chatClient); 
 
    print('Attempting to join "' + channelName + '" chat channel...'); 
 
    var promise = chatClient.getChannelByUniqueName(channelName); 
 
    promise.then(function(channel) { 
 
     console.log('Found ' + channelName + ' channel:'); 
 
     channels[channelName] = channel; 
 
     console.log(channels); 
 
     setupChannel(); 
 
    }).catch(function() { 
 
     // If it doesn't exist, let's create it 
 
     chatClient.createChannel({ 
 
     uniqueName: channelName, 
 
     friendlyName: channelFriendlyName 
 
     }).then(function(channel) { 
 
     channels[channelName] = channel; 
 
     setupChannel(channelName); 
 
     }); 
 
    }); 
 
    }

+0

你在哪里设置“chatClient”?你能分享一点你的代码来显示你在哪里设置客户端以及如何调用这个函数? – philnash

+0

@philnash我只是更新了我放在问题中的代码,以显示聊天客户端 – jareds

回答

1

Twilio开发者传道这里。

它看起来像我没有通过到您的joinChannel方法(其次,客户端可能尚未完全初始化)。

我会初始化客户端;下面,使用create方法,它返回时,客户端准备能解决的承诺。

// Initialize the Chat client 
    new Twilio.Chat.Client.create(data.token).then(function(chatClient) { 
    joinChannels(chatClient); 
    }); 
}); 

然后,请确保您通过对joinChannel方法传递客户端:

function joinChannels(chatClient) { 
    chatClient.getSubscribedChannels(); 
    joinChannel(chatClient, 'generalss','Generals Chat Channel'); 
} 

function joinChannel(chatClient, channelName, channelFriendlyName) { 
    // the rest... 
} 

让我知道这是否有助于在所有。

+0

嗨,是的,帮助。谢谢 – jareds

+0

太棒了,如果它解决了您的问题,请标记为正确,以便其他人也可以看到。谢谢! – philnash

+0

我不知道我怎么会去根据已创建 – jareds