Browse Source

add emailing activities

pull/640/head
cKey 3 years ago
parent
commit
83a486971b
  1. 14
      aspnet-core/LINGYUN.MicroService.Workflow.sln
  2. 3
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/FodyWeavers.xml
  3. 30
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/FodyWeavers.xsd
  4. 20
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN.Abp.Elsa.Activities.Emailing.csproj
  5. 11
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN/Abp/Elsa/Activities/Emailing/AbpElsaActivitiesEmailingModule.cs
  6. 81
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN/Abp/Elsa/Activities/Emailing/Activities/SendEmailing.cs
  7. 16
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN/Abp/Elsa/Activities/Emailing/Startup.cs
  8. 15
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/Microsoft/Extensions/DependencyInjection/EmailingServiceCollectionExtensions.cs
  9. 3
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/FodyWeavers.xml
  10. 30
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/FodyWeavers.xsd
  11. 25
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN.Abp.Elsa.Activities.csproj
  12. 40
      aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN/Abp/Elsa/Activities/AbpElsaActivitiesModule.cs
  13. 5
      aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj
  14. 4
      aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs
  15. 10
      aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs
  16. 1
      aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json

14
aspnet-core/LINGYUN.MicroService.Workflow.sln

@ -73,6 +73,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Notifications",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IM", "modules\common\LINGYUN.Abp.IM\LINGYUN.Abp.IM.csproj", "{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.Activities.Emailing", "modules\elsa\LINGYUN.Abp.Elsa.Activities.Emailing\LINGYUN.Abp.Elsa.Activities.Emailing.csproj", "{9E213E6F-77CB-4068-93EB-465C47FDA8FA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Elsa.Activities", "modules\elsa\LINGYUN.Abp.Elsa.Activities\LINGYUN.Abp.Elsa.Activities.csproj", "{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -187,6 +191,14 @@ Global
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126}.Release|Any CPU.Build.0 = Release|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9E213E6F-77CB-4068-93EB-465C47FDA8FA}.Release|Any CPU.Build.0 = Release|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -222,6 +234,8 @@ Global
{18A20311-84D8-49C4-B7BA-1187FF25E9BC} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{2C3FABD7-808B-47B5-A194-849A1738E9A2} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{8BE6BA3E-048E-4FC7-81DD-7FCD29AE2126} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{9E213E6F-77CB-4068-93EB-465C47FDA8FA} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
{EEE9DF30-1901-4070-8E03-A8D8A0E10E34} = {F1CCBEC7-ACAB-4DC5-909E-D8CC2E1B7EEC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6BB7A5DE-DA12-44DC-BC9B-0F6CA524346F}

3
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

20
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN.Abp.Elsa.Activities.Emailing.csproj

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RootNamespace />
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Emailing" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LINGYUN.Abp.Elsa\LINGYUN.Abp.Elsa.csproj" />
</ItemGroup>
</Project>

11
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN/Abp/Elsa/Activities/Emailing/AbpElsaActivitiesEmailingModule.cs

@ -0,0 +1,11 @@
using Volo.Abp.Modularity;
using Volo.Abp.Emailing;
namespace LINGYUN.Abp.Elsa.Activities.Emailing;
[DependsOn(
typeof(AbpElsaModule),
typeof(AbpEmailingModule))]
public class AbpElsaActivitiesEmailingModule : AbpModule
{
}

81
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN/Abp/Elsa/Activities/Emailing/Activities/SendEmailing.cs

@ -0,0 +1,81 @@
using Elsa;
using Elsa.ActivityResults;
using Elsa.Attributes;
using Elsa.Design;
using Elsa.Expressions;
using Elsa.Providers.WorkflowStorage;
using Elsa.Services;
using Elsa.Services.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Emailing;
using Volo.Abp.TextTemplating;
namespace LINGYUN.Abp.Elsa.Activities.Emailing;
/// <summary>
/// 发送邮件
/// </summary>
/// <remarks>
/// 与elsa基础SendEmail命名冲突,故改名
/// 此活动使用abp框架内置邮件发送接口<see cref="IEmailSender"/>
/// </remarks>
[Action(
Category = "Emailing",
Description = "Send an email message.",
Outcomes = new[] { OutcomeNames.Done })]
public class SendEmailing : Activity
{
private readonly IEmailSender _emailSender;
private readonly ITemplateRenderer _templateRenderer;
public SendEmailing(
IEmailSender emailSender,
ITemplateRenderer templateRenderer)
{
_emailSender = emailSender;
_templateRenderer = templateRenderer;
}
[ActivityInput(Hint = "The recipients email addresses.", UIHint = ActivityInputUIHints.MultiText, DefaultSyntax = SyntaxNames.Json, SupportedSyntaxes = new[] { SyntaxNames.Json, SyntaxNames.JavaScript })]
public ICollection<string> To { get; set; } = new List<string>();
[ActivityInput(Hint = "The subject of the email message.", SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
public string? Subject { get; set; }
[ActivityInput(Hint = "The body of the email message.", UIHint = ActivityInputUIHints.MultiLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
public string? Body { get; set; }
[ActivityInput(Hint = "The body of the email message.", UIHint = ActivityInputUIHints.MultiLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
public string? Culture { get; set; }
[ActivityInput(Hint = "The template name of render the email message.", UIHint = ActivityInputUIHints.MultiLine, SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid })]
public string? Template { get; set; }
[ActivityInput(
Hint = "Model parameters used to format the contents of the template.",
UIHint = ActivityInputUIHints.MultiLine,
SupportedSyntaxes = new[] { SyntaxNames.JavaScript, SyntaxNames.Liquid },
DefaultWorkflowStorageProvider = TransientWorkflowStorageProvider.ProviderName
)]
public object? Model { get; set; }
protected async override ValueTask<IActivityExecutionResult> OnExecuteAsync(ActivityExecutionContext context)
{
var to = To.JoinAsString(";");
var content = Body;
if (!Template.IsNullOrWhiteSpace())
{
content = await _templateRenderer.RenderAsync(
Template,
Model,
Culture);
}
await _emailSender.SendAsync(to, Subject, content);
return Done();
}
}

16
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/LINGYUN/Abp/Elsa/Activities/Emailing/Startup.cs

@ -0,0 +1,16 @@
using Elsa.Attributes;
using Elsa.Options;
using Elsa.Services.Startup;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace LINGYUN.Abp.Elsa.Activities.Emailing;
[Feature("Emailing")]
public class Startup : StartupBase
{
public override void ConfigureElsa(ElsaOptionsBuilder elsa, IConfiguration configuration)
{
elsa.AddEmailingActivities();
}
}

15
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities.Emailing/Microsoft/Extensions/DependencyInjection/EmailingServiceCollectionExtensions.cs

@ -0,0 +1,15 @@
using Elsa.Options;
using LINGYUN.Abp.Elsa.Activities.Emailing;
namespace Microsoft.Extensions.DependencyInjection;
public static class EmailingServiceCollectionExtensions
{
public static ElsaOptionsBuilder AddEmailingActivities(this ElsaOptionsBuilder options)
{
options
.AddActivity<SendEmailing>();
return options;
}
}

3
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

25
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN.Abp.Elsa.Activities.csproj

@ -0,0 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\configureawait.props" />
<Import Project="..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RootNamespace />
<Nullable>Enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LINGYUN.Abp.Elsa.Activities.BlobStoring\LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj" />
<ProjectReference Include="..\LINGYUN.Abp.Elsa.Activities.Emailing\LINGYUN.Abp.Elsa.Activities.Emailing.csproj" />
<ProjectReference Include="..\LINGYUN.Abp.Elsa.Activities.IM\LINGYUN.Abp.Elsa.Activities.IM.csproj" />
<ProjectReference Include="..\LINGYUN.Abp.Elsa.Activities.Notifications\LINGYUN.Abp.Elsa.Activities.Notifications.csproj" />
<ProjectReference Include="..\LINGYUN.Abp.Elsa.Activities.Sms\LINGYUN.Abp.Elsa.Activities.Sms.csproj" />
<ProjectReference Include="..\LINGYUN.Abp.Elsa\LINGYUN.Abp.Elsa.csproj" />
</ItemGroup>
</Project>

40
aspnet-core/modules/elsa/LINGYUN.Abp.Elsa.Activities/LINGYUN/Abp/Elsa/Activities/AbpElsaActivitiesModule.cs

@ -0,0 +1,40 @@
using Elsa;
using Elsa.Options;
using LINGYUN.Abp.Elsa.Activities.BlobStoring;
using LINGYUN.Abp.Elsa.Activities.Emailing;
using LINGYUN.Abp.Elsa.Activities.IM;
using LINGYUN.Abp.Elsa.Activities.Notifications;
using LINGYUN.Abp.Elsa.Activities.Sms;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
namespace LINGYUN.Abp.Elsa.Activities;
[DependsOn(
typeof(AbpElsaModule),
typeof(AbpElsaActivitiesBlobStoringModule),
typeof(AbpElsaActivitiesEmailingModule),
typeof(AbpElsaActivitiesIMModule),
typeof(AbpElsaActivitiesNotificationsModule),
typeof(AbpElsaActivitiesSmsModule))]
public class AbpElsaActivitiesModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
var elsaSection = configuration.GetSection("Elsa");
var startups = new[]
{
typeof(Emailing.Startup),
typeof(BlobStoring.Startup),
typeof(Notifications.Startup),
typeof(Sms.Startup),
typeof(IM.Startup),
};
PreConfigure<ElsaOptionsBuilder>(elsa =>
{
elsa.AddFeatures(startups, configuration);
});
}
}

5
aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/LY.MicroService.WorkflowManagement.HttpApi.Host.csproj

@ -46,10 +46,7 @@
<ItemGroup>
<ProjectReference Include="..\..\modules\common\LINGYUN.Abp.Data.DbMigrator\LINGYUN.Abp.Data.DbMigrator.csproj" />
<ProjectReference Include="..\..\modules\common\LINGYUN.Abp.ExceptionHandling.Emailing\LINGYUN.Abp.ExceptionHandling.Emailing.csproj" />
<ProjectReference Include="..\..\modules\elsa\LINGYUN.Abp.Elsa.Activities.BlobStoring\LINGYUN.Abp.Elsa.Activities.BlobStoring.csproj" />
<ProjectReference Include="..\..\modules\elsa\LINGYUN.Abp.Elsa.Activities.IM\LINGYUN.Abp.Elsa.Activities.IM.csproj" />
<ProjectReference Include="..\..\modules\elsa\LINGYUN.Abp.Elsa.Activities.Notifications\LINGYUN.Abp.Elsa.Activities.Notifications.csproj" />
<ProjectReference Include="..\..\modules\elsa\LINGYUN.Abp.Elsa.Activities.Sms\LINGYUN.Abp.Elsa.Activities.Sms.csproj" />
<ProjectReference Include="..\..\modules\elsa\LINGYUN.Abp.Elsa.Activities\LINGYUN.Abp.Elsa.Activities.csproj" />
<ProjectReference Include="..\..\modules\elsa\LINGYUN.Abp.Elsa.Server\LINGYUN.Abp.Elsa.Server.csproj" />
<ProjectReference Include="..\..\modules\elsa\LINGYUN.Abp.Elsa\LINGYUN.Abp.Elsa.csproj" />
<ProjectReference Include="..\..\modules\saas\LINGYUN.Abp.Saas.EntityFrameworkCore\LINGYUN.Abp.Saas.EntityFrameworkCore.csproj" />

4
aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.Configure.cs

@ -73,10 +73,6 @@ public partial class WorkflowManagementHttpApiHostModule
typeof(Elsa.Activities.Webhooks.Startup),
typeof(Elsa.Webhooks.Persistence.EntityFramework.MySql.Startup),
typeof(Elsa.WorkflowSettings.Persistence.EntityFramework.MySql.Startup),
typeof(LINGYUN.Abp.Elsa.Activities.BlobStoring.Startup),
typeof(LINGYUN.Abp.Elsa.Activities.Notifications.Startup),
typeof(LINGYUN.Abp.Elsa.Activities.Sms.Startup),
typeof(LINGYUN.Abp.Elsa.Activities.IM.Startup),
};
PreConfigure<ElsaOptionsBuilder>(elsa =>

10
aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/WorkflowManagementHttpApiHostModule.cs

@ -1,14 +1,16 @@
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using Elsa;
using LINGYUN.Abp.AspNetCore.Mvc.Localization;
using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.BlobStoring.OssManagement;
using LINGYUN.Abp.Data.DbMigrator;
using LINGYUN.Abp.Elsa;
using LINGYUN.Abp.Elsa.Activities;
using LINGYUN.Abp.ExceptionHandling.Emailing;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore;
using LINGYUN.Abp.Saas.EntityFrameworkCore;
using LINGYUN.Abp.Serilog.Enrichers.Application;
using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using LINGYUN.Abp.Elsa;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
@ -27,8 +29,6 @@ using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.SettingManagement.EntityFrameworkCore;
using Volo.Abp.Swashbuckle;
using LINGYUN.Abp.Elsa.Activities.BlobStoring;
using Elsa;
namespace LY.MicroService.WorkflowManagement;
@ -40,7 +40,7 @@ namespace LY.MicroService.WorkflowManagement;
typeof(AbpBlobStoringOssManagementModule),
typeof(AbpElsaModule),
typeof(AbpElsaServerModule),
typeof(AbpElsaActivitiesBlobStoringModule),
typeof(AbpElsaActivitiesModule),
typeof(AbpEntityFrameworkCoreMySQLModule),
typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
typeof(AbpEmailingExceptionHandlingModule),

1
aspnet-core/services/LY.MicroService.WorkflowManagement.HttpApi.Host/appsettings.Development.json

@ -41,6 +41,7 @@
"Conductor": true,
"Telnyx": true,
"BlobStoring": true,
"Emailing": true,
"Notification": true,
"Sms": true,
"IM": true,

Loading…
Cancel
Save