首页 > 其他分享 >Dynamics 365 Marketing自定义渠道的步骤

Dynamics 365 Marketing自定义渠道的步骤

时间:2023-09-04 22:55:55浏览次数:34  
标签:flashinfosmschannel 自定义 Marketing entity NoCascade msdyn new Dynamics id


1.创建2个实体:渠道【new_flashinfosmschannel】、消息模板(配置窗体)
注意:如果想用标准消息模板,可以不用创建消息模板

标准消息模板效果:

 

 

 

2.导出解决方案,往XML增加一个关系【EntityRelationship】
https://learn.microsoft.com/zh-cn/dynamics365/marketing/real-time-marketing-define-custom-channel-instance

注意:导出的解决方案,需要包含实体【msdyn_channelinstance】

示例:

 <EntityRelationship Name="msdyn_ChannelInstance_extendedentityid_new_flashinfosmschannel">
    <EntityRelationshipType>OneToMany</EntityRelationshipType>
    <IsCustomizable>0</IsCustomizable>
    <IntroducedVersion>1.0.0.0</IntroducedVersion>
    <IsHierarchical>0</IsHierarchical>
    <ReferencingEntityName>msdyn_ChannelInstance</ReferencingEntityName>
    <ReferencedEntityName>new_flashinfosmschannel</ReferencedEntityName>
    <CascadeAssign>NoCascade</CascadeAssign>
    <CascadeDelete>RemoveLink</CascadeDelete>
    <CascadeReparent>NoCascade</CascadeReparent>
    <CascadeShare>NoCascade</CascadeShare>
    <CascadeUnshare>NoCascade</CascadeUnshare>
    <CascadeRollupView>NoCascade</CascadeRollupView>
    <IsValidForAdvancedFind>1</IsValidForAdvancedFind>
    <ReferencingAttributeName>msdyn_extendedentityId</ReferencingAttributeName>
    <RelationshipDescription>
      <Descriptions>
        <Description description="" languagecode="1033" />
      </Descriptions>
    </RelationshipDescription>
    <EntityRelationshipRoles>
      <EntityRelationshipRole>
        <NavPaneDisplayOption>UseCollectionName</NavPaneDisplayOption>
        <NavPaneArea>Details</NavPaneArea>
        <NavPaneOrder>10000</NavPaneOrder>
        <NavigationPropertyName>msdyn_extendedentityid_new_flashinfosmschannel</NavigationPropertyName>
        <RelationshipRoleType>1</RelationshipRoleType>
      </EntityRelationshipRole>
      <EntityRelationshipRole>
        <NavigationPropertyName>msdyn_ChannelInstance_extendedentityid_new_flashinfosmschannel</NavigationPropertyName>
        <RelationshipRoleType>0</RelationshipRoleType>
      </EntityRelationshipRole>
    </EntityRelationshipRoles>
  </EntityRelationship>

 

 

 

3.写插件代码&注册上去&在CRM创建customer api,比如创建的new_flashinfosms_customapi

 

 

4.在代码创建自定义渠道

/// <summary>
        /// 渠道定义
        /// </summary>
        /// <param name="service"></param>
        /// <returns></returns>
        public static Guid Insert_msdyn_channeldefinitions(IOrganizationService service)
        {
            Entity entity = new Entity("msdyn_channeldefinition");
            entity.Id = Guid.NewGuid();// 
            entity["msdyn_name"] = "Flashinfo SMS Channel";
            entity["msdyn_displayname"] = "Flashinfo SMS Channel";
            entity["msdyn_description"] = "Flashinfo SMS Channel";
            entity["msdyn_channeltype"] = "Custom";
            entity["msdyn_outboundendpointurltemplate"] = "/new_flashinfosms_customapi";
            entity["msdyn_hasinbound"] = false;
            entity["msdyn_hasdeliveryreceipt"] = true;
            entity["msdyn_supportsaccount"] = false;
            entity["msdyn_channeldefinitionexternalentity"] = "new_flashinfosmschannel";
            entity["msdyn_channeldefinitionexternalformid"] = "2054e3cb-e2fb-4d0a-bdde-cc51982da65d";   //必须小写,是实体new_flashinfosmschannel的主窗体ID
            entity["msdyn_messageformid"] = "9af480f8-a1b8-422a-9e4e-62d95a952ccf";  //可以为null,代表使用标准模板效果
          
            var id = service.Create(entity);
            return id; 
        }
        /// <summary>
        /// 消息定义
        /// </summary>
        /// <param name="service"></param>
        /// <param name="cid"></param>
        public static void Insert_msdyn_channelmessageparts(IOrganizationService service, Guid cid)
        {
            Entity entity = new Entity("msdyn_channelmessagepart");
            entity.Id = Guid.NewGuid();// 
            entity["msdyn_name"] = "text";// 消息部分的名称
            entity["msdyn_displayname"] = "text";// 显示名称
            entity["msdyn_description"] = "text";// 说明
            entity["msdyn_channeldefinitionid"] = new EntityReference("msdyn_channeldefinition", cid);// 渠道定义 ID
            entity["msdyn_type"] = new OptionSetValue(192350000);// 渠道类型
            entity["msdyn_isrequired"] = true;// 指示是否需要此部分
            entity["msdyn_maxlength"] = 1000;// 部分的最大长度
            var id = service.Create(entity);
        }

调用:

               var id = Insert_msdyn_channeldefinitions(adminService);
               Insert_msdyn_channelmessageparts(adminService, id);

 

5.在自定义渠道,就能看到新增的渠道

标签:flashinfosmschannel,自定义,Marketing,entity,NoCascade,msdyn,new,Dynamics,id
From: https://www.cnblogs.com/parkerchen/p/17678334.html

相关文章

  • WPF 自定义窗体(一)
    .Net默认的窗体样式只有四种:None、SingleBorderWindow、ThreeDBorderWindow、ToolWindow,都比较“丑”。而很多时候,我们希望自定义窗体,比如,无边框,有阴影,或者有模糊效果等。在WPF中,要实现自定义窗体比较简单,主要有两种方法:1)使用WindowChrome;2)使用WindowStyle=“None”。一、使......
  • 哔哩哔哩 B站 bilibili 视频倍速设置 视频倍速可自定义
    目录一、复制如下代码二、在B站视频播放页面进入控制台(一)以火狐浏览器为例     (二)以谷歌浏览器为例三、将复制的代码粘贴到下方输入框,并回车Enter即可(一)以火狐浏览器为例     (二)以谷歌浏览器为例 四、然后就可以了一、复制如下代码(该代码用于设置倍速为3,最后......
  • 授权规则-自定义异常结果
        ......
  • C# 在Word文档级自定义中选择一个区域 使用VSTO外接程序选择范围
    你可以使用Range对象在MicrosoftOfficeWord文档中定义和选择范围。有多种方法可以选择整个文档,例如使用Select方法和Range对象,或者使用文档级自定义和Document类的Content属性。适用于:本主题中的信息适用于Word的文档级项目和VSTO外接程序项目。有关详细信息,请参阅Office应用程......
  • 直播源码,自定义progressBar样式
    直播源码,自定义progressBar样式1、layout中xml布局如下: <RelativeLayout  android:layout_height="16dp"  android:layout_width="match_parent">  <ProgressBar    style="?android:attr/progressBarStyleHorizontal"    android......
  • uniapp app端如何使用插件实现获取手机应用自定义上传
    <u-buttonsize="mini"style="background-color:#3ac908;color:#ffffff;font-size:16rpx;width:110rpx;height:50rpx;"@tap="onUpload">上传</u-button>//以下代码写于根目录下第一个view顶部或跟在自定义导航栏后面<l-fileref="lFile&......
  • 微信小程序自定义头部导航栏
    微信小程序自定义头部导航栏虽然小程序自带的顶部导航栏比较好用,但是扩展性比较差。在实际开发中我们经常需要针对导航栏进行一些功能性操作。比如点击返回按钮返回到固定的页面,设置其他背景颜色字体颜色以及增加一些按钮等等。下面我们一起来看看导航栏的定制;先看下demo的效果:......
  • elemenui datePicker 日期组件之快捷键的自定义,本周,本月,本季度,上周,上月,上季度
    1,先定义一个日期工具类,或者写在其他的方法中都行。定义工具类可重复使用1exportfunctiongetDateRang(val){2constnow=newDate();//当前日期3constnowDayOfWeek=now.getDay();//今天是本周的第几天4constnowDay=now.getDate();//当日5......
  • 如何正确实现一个自定义 Exception
    最近在公司的项目中,编写了几个自定义的Exception类。提交PR的时候,sonarqube提示这几个自定义异常不符合ISerializablepatten.花了点时间稍微研究了一下,把这个问题解了。今天在此记录一下,可能大家都会帮助到大家。自定义异常编写一个自定义的异常,继承自Exception,其中定......
  • springboot自动配置的原理和如何自定义starter
    一、springboot自动配置的原理使用springboot时的一大优点就是当需要引入一些第三方的框架时只需要引入一个对应的starter后springboot就会自动的完成配置,例如在springboot中使用mybatis只需要引入mybatis提供的starter.那么这种便捷的配置方式是如何实现的呢,要了解其中的原理......