对于应用中的嵌入式聊天功能,我们使用的是Twilio的def sftp_form(request):
if request.method == 'POST':
form = sftpForm(request.POST or None)
if form.is_valid():
data = form.cleaned_data
host = data['host']
usuario = data['usuario']
clave = data['clave']
print host
print usuario
print clave
try:
SFTP_bajar(host,usuario,clave)
messages.success(request,' Success')
return redirect('auth_login')
except:
messages.error(request, 'Error. Something Failed.')
else:
form=sftpForm()
return render(request, 'sftp.html', {'form':form})
def SFTP_bajar(host,usuario,clave):
try:
transferencia = sftp.Connection(host=host, username=usuario, password=clave)
remotepath= 'myremotepath'
localpath="mylocalpath"
print ('\n' + 'Success')
except Exception, e:
print str(e)
框架。 Programmable Chat
创建如下:
TwilioChatClient
根据twilio文档,我们需要override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let token = utils.user_token {
setupTwilio(token: token)
}else {
utils.getAccessToken({
user_token in
if let token = user_token as String! {
self.setupTwilio(token: token)
}
})
}
}
private func setupTwilio(token: String) {
if client == nil {
client = TwilioChatClient(token: token, properties: nil, delegate: self)
}
}
来创建,获取,加入甚至删除频道,而我们得到的client?.channelsList()
始终为零。
仅供参考,用于创建client?.channelsList()
的令牌有效且client
不为零。有人可以告诉我为什么我们client
会变零吗?或者我们错过了什么?
另一个蹩脚的问题,client?.channelsList()
和TwilioIPMessagingClient
之间有什么区别?我假设TwilioChatClient
是TwilioChatClient
的升级,但没有找到任何明确的文档。任何人都可以给我一份移民指南吗?
P.S。 我们确实等待客户端在委托方法中初始化;像
TwilioIPMessagingClient
但是流量总是在第二个extension ChatViewController: TwilioChatClientDelegate {
func chatClient(_ client: TwilioChatClient!, synchronizationStatusChanged status: TCHClientSynchronizationStatus) {
guard status != .completed else {
print("Show failed alert")
return
}
guard client.channelsList() != nil else {
print("channel list is nil");
return
}
// create and/or join channel
joinChatChannel();
}
}
失败。
答案 0 :(得分:1)
client.channelsList()
状态, . completed
应该是非零的。这表明可能存在一些许可问题或其他错误。
要进一步诊断,在Twilio帐户的上下文中查看应用程序中的完整日志会很有帮助。我可以要求您打开包含日志(https://support.twilio.com/hc/en-us/requests/new)的Twilio支持的票证并参考此SO帖子吗?这将有助于它被发送到我们的团队,我们可以在这个问题上1:1与您合作。我们将在最后通过解决方案更新此帖子以帮助他人。
另外,关于TCHClientSynchronizationStatus
的快速说明 - 除了.completed
之外还有其他非错误状态,只是提到这一点,因此您知道客户端将在.completed之前通过多个状态,但不一定表示今天在您的代码段中打印()的错误。
答案 1 :(得分:0)
关于channelList为零。你在等待SDK完成init,并准备好使用吗?
您可以在此处查看如何执行此操作:https://www.twilio.com/docs/api/chat/guides/initializing-sdk-clients#ios
是的,IP消息系统已重命名为可编程聊天。您可以在此处找到iOS迁移指南:https://www.twilio.com/docs/api/chat/guides/migration-guide-ios-0160
希望有所帮助!
答案 2 :(得分:0)
我遇到了同样的障碍。我能够通过在您的委托中连接成功后执行以下步骤来解决此问题:
然后调用loadChannels方法
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[NSThread sleepForTimeInterval:1];
dispatch_async(dispatch_get_main_queue(), ^{
[self loadChannelList];
});
});
答案 3 :(得分:0)
感谢 @rbeiter 和Twilio的真诚支持。
问题是,我们错过了令牌信息中的identity
。 Twilio日志显示在
2017-03-15 06:38:03.842117 TwilioChatApplication [1053:482861] TNTwilsockClientImpl [3]:0x16e2b7000 | 03/15/06:38:03.841 |信息| 2 | TNTwilsockClientImpl |详细说明:{"代码":401,"状态":"'身份'不存在于令牌补助中#34;}
根据 rbeiter ,如果您使用Twilio的一个生成器构建令牌,可以通过在grants hash或object中设置身份密钥来解决此问题。