钉钉开发文档

第三方个人应用发送消息

更新时间: 2019-4-8

功能介绍

该功能是为了方便开发者高效触达用户所提供的消息能力,比如:投票结果查询,任务通知、支付订单状态等;
用户在E应用内产生提交页面的交互行为后,开发者可通过此能力给用户发送消息,同时开发者可在消息中配置E应用地址或指定应用内的页面地址,用户收到消息后可通过消息点击进入到E应用。

典型场景

开发者可通过消息高效触达用户,通知用户当前行为的结果及状态等;同时可在消息中配置跳转应用内指定页面地址,当用户查看消息时,在消息卡片点击“进入应用查看”,进入开发者配置的应用内指定页面;具体配置方式见接入指引。

消息入口


使用说明

  1. 开发者在用户提交的form表单上声明属性report-submit="true"该属性目前在需要在真机环境下测试。
<form onSubmit="formSubmit"  report-submit="true">
  <view class="section section_gap">
    <view class="section__title">表单类型</view>
    <input name="text" maxlength="10" placeholder="最大输入长度10" />
  </view>
  <view class="btn-area">
    <button formType="submit">推送消息</button>
  </view>
</form>
  1. 处理onsubmit事件时通过e.detail.formId获取推送消息临时授权码,和form表单的处理一起存储到业务服务器上。
formSubmit(e){
    // 通过e.detail.formId可以获取到推送消息的临时授权码code
    dd.httpRequest({
                        url: 'http://表单提交的服务端地址?code='+e.detail.formId,
                        method: 'POST',
                        headers:{"Content-Type":"application/json"},
                        data: { 
                        },
                        dataType: 'json',
                        success: function(res) {
                            if(res.data.success){
                                dd.alert({content:'form表单提交处理成功'});
                            }else{
                                dd.alert({title:"form表单提交处理失败",
                                        content:JSON.stringify(res)});
                            }                            
                        },
                        fail: function(res) {
                             dd.alert({content: 'form表单提交处理'});
                        }
                    });
    }
  1. 当业务场景需要给用户推送消息时,服务端使用推送消息接口给用户推送消息

发消息的条件

  • 提交表单
    当用户在E应用内发生过提交表单行为且该表单声明为要发消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)。

接口说明

请求方式:POST(HTTPS)
请求地址https://oapi.dingtalk.com/sns/send_msg?signature=kKlP1QmmiNR4VF&timestamp=1527130370219&accessKey=yourAppId

请求包结构体:

{
    "code":"formId",
    "msg":{
            "msgtype":"eapp",
            "eapp":{
                "img":"@mediaId",
                "title":"工单已回复",
                "content":"非常感谢",
                "link":"eapp://index/page?param1=1&param2=2"
            }
     }
}

URL签名参数说明:

参数 说明
accessKey 应用的appId
timestamp 当前时间戳,单位是毫秒
signature 通过appSecret计算出来的签名值,签名计算文档

参数说明

名称 类型 是否必须 示例值 描述
code String 必须 1234 表单提交场景下,为 submit 事件带上的 formId
msg.msgtype String 必须 eapp 目前只支持eapp消息格式
msg.eapp.img String 必须 消息中的图片资源id(可通过/media/upload接口获取)
msg.eapp.title String 必须 工单已回复 消息的标题, 最长100个字符
msg.eapp.content String 必须 非常感谢 消息的内容, 最长1000个字符
msg.eapp.link String 必须 eapp://index/page?param1=1&param2=2 点击消息跳转页面,仅限制本E应用内的页面,支持带参数(param1=1)

SDK请求示例(JAVA)

DefaultDingTalkClient  client = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/send_msg");
OapiSnsSendMsgRequest req = new OapiSnsSendMsgRequest();
req.setCode(code);
OapiSnsSendMsgRequest.Eapp eapp = new OapiSnsSendMsgRequest.Eapp();
eapp.setImg("@lALPBY0V5EuR4oDNAcrNAs4");
eapp.setContent("非常感谢您的反馈,非常感谢您的反馈,非常感谢您的反馈,非常感谢您的反馈,非常感谢您的反馈 \n\n"+System.currentTimeMillis());
eapp.setTitle("工单已回复");
eapp.setLink("eapp://page/index?param=aaa");
OapiSnsSendMsgRequest.Msg msg = new OapiSnsSendMsgRequest.Msg();
msg.setMsgtype("eapp");
msg.setEapp(eapp);
req.setMsg(msg);
OapiSnsSendMsgResponse response = client.execute(req,Constant.APP_ID,Constant.APP_SECRET)

返回结果

{
    "errcode":0,
    "errmsg":"ok"
}
参数 说明
errcode 返回码
errmsg 对返回码的文本描述内容
以上内容是否对您有帮助:
在文档使用中是否遇到以下问题(多选):
  • 内容错误
  • 更新不及时
  • 链接错误
  • 缺少代码/图片示例
  • 太简单/步骤待完善
手机号
更多建议
提交成功,感谢您的反馈!