Flutter消息模板服务插件pip_services_msgtemplates的使用

Flutter消息模板服务插件pip_services_msgtemplates的使用

Pip.Services Logo

MessageTemplates微服务

这是来自Pip.Services库的消息模板微服务。它向用户展示各种主题上的灵感消息模板。

该微服务目前支持以下部署选项:

  • 部署平台:独立进程、Seneca
  • 外部API:HTTP/REST、Seneca
  • 持久化:平面文件、MongoDB

该微服务与其他微服务没有依赖关系。

快速链接

  • 下载链接
  • 开发指南
  • 配置指南
  • 部署指南
  • 客户端SDK
  • 通信协议
    • HTTP版本1

合同

微服务的逻辑合同如下所示。对于物理实现(HTTP/REST),请参阅特定协议的文档。

class MessageTemplateV1 implements IStringIdentifiable {  
  String id;  
  String name;
  String from;
  MultiString subject;
  MultiString text;
  MultiString html;
  String status;
}

class MessageTemplateStatusV1 {
  static final New = 'new';
  static final Writing = 'writing';
  static final Translating = 'translating';
  static final Verifying = 'verifying';
  static final Completed = 'completed';
}

abstract class IMessageTemplatesV1 {
  Future<DataPage<TemplateV1>> getTemplates(
      String? correlationId, FilterParams filter, PagingParams paging);

  Future<TemplateV1> getTemplateById(String? correlationId, String id);

  Future<TemplateV1> getTemplateByIdOrName(String? correlationId, String idOrName);

  Future<TemplateV1> createTemplate(String? correlationId, TemplateV1 msgtemplate);

  Future<TemplateV1> updateTemplate(String? correlationId, TemplateV1 msgtemplate);

  Future<TemplateV1> deleteTemplateById(String? correlationId, String msgtemplateId);
}

下载

目前获取微服务的唯一方法是从GitHub仓库直接检出。

git clone git@github.com:pip-services-content/pip-services-msgtemplates-dart.git

Pip.Service团队正在努力实现打包,并使稳定版本可供下载为zip存档。

运行

在微服务文件夹的根目录下添加config.yaml文件,并设置配置参数。

微服务配置示例:

---
# 容器描述符
- descriptor: "pip-services:context-info:default:default:1.0"
  name: "pip-services-msgtemplates"
  description: "Message Templates microservice for pip-services"

# 控制台日志记录
- descriptor: "pip-services:logger:console:default:1.0"
  level: "trace"

# 性能计数器,将值发布到日志
- descriptor: "pip-services:counters:log:default:1.0"
  level: "trace"

{{#MEMORY_ENABLED}}
# 内存持久化。仅用于测试!
- descriptor: "pip-services-msgtemplates:persistence:memory:default:1.0"
{{/MEMORY_ENABLED}}

{{#FILE_ENABLED}}
# 文件持久化。用于测试或简单的独立部署
- descriptor: "pip-services-msgtemplates:persistence:file:default:1.0"
  path: {{FILE_PATH}}{{^FILE_PATH}}"./data/msgtemplates.json"{{/FILE_PATH}}
{{/FILE_ENABLED}}

{{#MONGO_ENABLED}}
# MongoDB持久化
- descriptor: "pip-services-msgtemplates:persistence:mongodb:default:1.0"
  collection: {{MONGO_COLLECTION}}{{^MONGO_COLLECTION}}msgtemplates{{/MONGO_COLLECTION}}
  connection:
    uri: {{{MONGO_SERVICE_URI}}}
    host: {{{MONGO_SERVICE_HOST}}}{{^MONGO_SERVICE_HOST}}localhost{{/MONGO_SERVICE_HOST}}
    port: {{MONGO_SERVICE_PORT}}{{^MONGO_SERVICE_PORT}}27017{{/MONGO_SERVICE_PORT}}
    database: {{MONGO_DB}}{{#^MONGO_DB}}app{{/^MONGO_DB}}
  credential:
    username: {{MONGO_USER}}
    password: {{MONGO_PASS}}
{{/MONGO_ENABLED}}

{{^MEMORY_ENABLED}}{{^FILE_ENABLED}}{{^MONGO_ENABLED}}
# 默认内存持久化
- descriptor: "pip-services-msgtemplates:persistence:memory:default:1.0"
{{/MONGO_ENABLED}}{{/FILE_ENABLED}}{{/MEMORY_ENABLED}}

# 默认控制器
- descriptor: "pip-services-msgtemplates:controller:default:default:1.0"

# 公共HTTP端点
- descriptor: "pip-services:endpoint:http:default:1.0"
  connection:
    protocol: "http"
    host: "0.0.0.0"
    port: 8080

# HTTP端点版本1.0
- descriptor: "pip-services-msgtemplates:service:http:default:1.0"

# 心跳服务
- descriptor: "pip-services:heartbeat-service:http:default:1.0"

# 状态服务
- descriptor: "pip-services:status-service:http:default:1.0"

有关微服务配置的更多信息,请参见配置指南。

使用以下命令启动微服务:

dart ./bin/run.dart

使用

与微服务最简单的工作方式是使用客户端SDK。可用的客户端SDK列表详见快速链接部分。

如果你使用的是Dart,请获取所需的库引用:

导入所需的包:

import 'package:pip_services3_commons/pip_services3_commons.dart';
import 'package:pip_services3_rpc/pip_services3_rpc.dart';

import 'package:pip_services_msgtemplates/pip_services_msgtemplates.dart';

定义与微服务外部API匹配的客户端配置参数:

// 客户端配置
var httpConfig = ConfigParams.fromTuples(
	"connection.protocol", "http",
	"connection.host", "localhost",
	"connection.port", 8080
);

实例化客户端并打开连接到微服务:

// 创建客户端实例
var client = TemplatesHttpClientV1(config);

// 配置客户端
client.configure(httpConfig);

// 连接到微服务
try{
  await client.open(null);
}catch(e) {
  // 错误处理...
}       
// 与微服务交互
// ...

现在客户端已准备好执行操作:

// 创建新的消息模板
final TEMPLATE = MessageTemplateV1(
    id: '1',
    name: 'template1',
    from: null,
    subject: MultiString({'en': 'Text 1'}),
    text: MultiString({'en': 'Text 1'}),
    html: MultiString({'en': 'Text 1'}),
    status: MessageTemplateStatusV1.Completed);

    // 创建消息模板
    try {
      var msgtemplate = await client.createTemplate('123', TEMPLATE);
      // 对返回的消息模板进行操作...
    } catch(err) {
      // 错误处理...     
    }

获取消息模板:

try {
var msgtemplate = await client.getTemplateByIdOrName(
    null,
    'template1');
    // 对消息模板进行操作...

    } catch(err) { // 错误处理}

更多关于Flutter消息模板服务插件pip_services_msgtemplates的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter消息模板服务插件pip_services_msgtemplates的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


pip_services_msgtemplates 是一个用于处理消息模板的服务插件,通常用于生成动态消息内容。它可以帮助你根据模板和变量生成最终的消息内容,适用于电子邮件、短信、通知等场景。

以下是如何在 Flutter 项目中使用 pip_services_msgtemplates 插件的基本步骤:

1. 安装插件

首先,你需要在 pubspec.yaml 文件中添加 pip_services_msgtemplates 插件的依赖:

dependencies:
  pip_services_msgtemplates: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 pip_services_msgtemplates

import 'package:pip_services_msgtemplates/pip_services_msgtemplates.dart';

3. 创建消息模板服务

你可以创建一个消息模板服务实例,并配置它:

var msgTemplateService = MessageTemplateService();

4. 定义模板

你可以定义一个消息模板。模板可以使用变量占位符,例如 {{name}}

String template = "Hello, {{name}}! Welcome to our service.";

5. 渲染模板

使用 render 方法来渲染模板,传入一个包含变量的 Map

Map<String, dynamic> variables = {
  'name': 'John Doe'
};

String message = msgTemplateService.render(template, variables);

print(message); // 输出: Hello, John Doe! Welcome to our service.

6. 使用模板组

你还可以定义一组模板,并根据需要选择使用哪个模板:

Map<String, String> templates = {
  'welcome': "Hello, {{name}}! Welcome to our service.",
  'goodbye': "Goodbye, {{name}}! We hope to see you again."
};

String message = msgTemplateService.render(templates['welcome'], variables);

print(message); // 输出: Hello, John Doe! Welcome to our service.

7. 高级用法

你还可以使用更高级的功能,例如条件语句、循环等,具体取决于插件的支持情况。你可以查阅插件的文档以了解更多详细信息。

示例代码

以下是一个完整的示例代码:

import 'package:pip_services_msgtemplates/pip_services_msgtemplates.dart';

void main() {
  var msgTemplateService = MessageTemplateService();

  String template = "Hello, {{name}}! Welcome to our service.";

  Map<String, dynamic> variables = {
    'name': 'John Doe'
  };

  String message = msgTemplateService.render(template, variables);

  print(message); // 输出: Hello, John Doe! Welcome to our service.
}
回到顶部