开发者社区> 问答> 正文

新接口toConversation的问题

钉钉版本2.7.1,IOS9.2,dingtalk.js的版本是0.6.6,调用toConversation出现:getCId failed,errroCode=3。我调试过,cid是有值的。
其中chartId参数的result.cid的值,是我通过pickConversation得到的。

展开
收起
柳看风 2015-12-25 08:50:33 7069 0
4 条回答
写回答
取消 提交回答
  • Re新接口toConversation的问题
    您好,需要调用“根据corpid选择会话”,dd.biz.chat.chooseConversationByCorpId,获取chatid
    2016-01-06 18:02:55
    赞同 展开评论 打赏
  • 回 2楼(柳看风) 的帖子
    errorcode=3,是jsapi校验失败,
    (1)首先确认是否在dd.config的jsApiList里面配置了该jsapi,如下
    dd.config({
        agentId: '', // 必填,微应用ID
        corpId: '',//必填,企业ID
        timeStamp: , // 必填,生成签名的时间戳
        nonceStr: '', // 必填,生成签名的随机串
        signature: '', // 必填,签名
        jsApiList: ['device.notification.alert', 'device.notification.confirm'] // 必填,需要使用的jsapi列表
    });
    (2)检查用来生成签名(signature)的jsapi_ticket是否过期(jsapi_ticket有效期为7200秒,而且当你请求了新的ticket之后,旧的ticket就失效了)
    (3)其次检查生成签名的Url参数,与调用dd.config 所在的url是否一致
    生成签名用的url需要去除hash部分,e.g. 如果当前页面url是http://abc.def/ghi/jkl?m=123&n=456#opq,则用于生成签名的url是http://abc.def/ghi/jkl?m=123&n=456,可以使用调试工具来生成jsapi_ticket和signature,并和你实际使用的进行对比
    2016-01-04 17:01:04
    赞同 展开评论 打赏
  • Re新接口toConversation的问题
    我是先用以下代码取到result.cid的
        dd.biz.chat.pickConversation({
            corpId: corpId, //企业id
            isConfirm: 'true', //是否弹出确认窗口,默认为true
            onSuccess: function (result) {
    //... //此处已经取到CID

                                dd.biz.chat.toConversation({
                                    corpId: corpId,
                                    chatId: result.cid,
                                    onSuccess: function () { },
                                    onFail: function (err) { alert(GetObjectInfo(err)); //在这里返回ERROR信息 }
                                });
                            });
    //....
    }

    -------------------------

    Re新接口toConversation的问题
    你说的这些我都做了检查,首先,在我的代码中,所有接口都可以正常调用(运行正常好几个月了),就是新接口toconversation不行,如果是你说的签名过期,是不可以出现这样的情况的。
    1,2,3中的问题,我都有注意,加入jsapilist,缓存并确保ticket和accesstoken一致,url肯定没有包括#,做过确认了,而且同一个url下,所有接口都正常调用,就这个不行。

    而且错误描述是GetCID Error,就我理解来看,是没有得到相应的CID,但我的CID是有值的。

    -------------------------

    Re新接口toConversation的问题
    是的,用这个接口可以。但新问题又产生了,dd.biz.chat.chooseConversationByCorpId获得的是chatId,不同于dd.biz.chat.pickConversation获得的cid,chatId在发送普通会话消息时会出错(https://oapi.dingtalk.com/message/send_to_conversation),即无效的cid,但企业会话消息又不支持chatId参数。那么我用dd.biz.chat.chooseConversationByCorpId得到的chatId除了用来跳转到会话界面外,就没有其他用了吗?不能预先发送消息了吗?
    2015-12-25 14:26:28
    赞同 展开评论 打赏
  • Re新接口toConversation的问题
    请帮忙确认下这两点:
    1. corpid和chatid是不是匹配的,chatid属于这个企业吗?
    2. 这个错误从哪里出来的,是从onfailed获取的吗?
    2015-12-25 10:37:29
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载