bambolee-digital/onboarding-package

Laravel/FilamentPHP 用于管理可定制入职流程的包。

1.0.6 2024-09-16 18:30 UTC

This package is auto-updated.

Last update: 2024-09-19 17:37:57 UTC


README

OnboardingPackage 是一个 Laravel 包,允许您为用户创建定制的入职流程,包括动态问题、选项、基于用户响应的条件消息和流程控制。该包使用 Spatie Laravel Translatable 支持多种语言,并集成 FilamentPHP 管理面板以方便管理。

目录

安装

您可以通过 Composer 安装此包

composer require bamboleedigital/onboarding-package

安装后,发布迁移和配置文件

php artisan vendor:publish --provider="BamboleeDigital\OnboardingPackage\Providers\OnboardingServiceProvider" --tag="migrations"
php artisan vendor:publish --provider="BamboleeDigital\OnboardingPackage\Providers\OnboardingServiceProvider" --tag="config"

然后,运行迁移

php artisan migrate

配置

Filament 和 Spatie Laravel Translatable

请确保在您的项目中安装并配置了 FilamentPHPSpatie Laravel Translatable

安装 Filament 翻译插件

composer require filament/spatie-laravel-translatable-plugin:"^3.2" -W

将插件添加到您的 Filament 面板

use Filament\SpatieLaravelTranslatablePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(
            SpatieLaravelTranslatablePlugin::make()
                ->defaultLocales(['en', 'pt']), // Set the languages you want to support
        );
}

包配置

包配置文件允许您根据需要自定义选项。将在您的项目根目录的 config 文件夹中发布 config/onboarding-package.php 文件。

用法

管理问题和选项

访问 FilamentPHP 管理面板并导航到 问题 菜单。

创建新问题

  1. 点击 创建
  2. 输入 问题文本。使用 LocaleSwitcher 添加不同语言中的翻译。
  3. 选择 问题类型
    • 文本:用户将提供一个文本答案。
    • 单选:用户将选择一个选项。
    • 多选:用户可以选择多个选项。
  4. 保存问题。

管理选项

对于 单选多选 问题

  1. 在创建的问题中,访问 选项 选项卡。
  2. 点击 创建 添加新选项。
  3. 输入 选项文本 和翻译(如有必要)。
  4. 可选地,添加 Markdown 格式的 条件消息。如果选择此选项,则会向用户显示此消息。
  5. 如果您想根据用户的响应控制流程,请设置 下一问题
  6. 保存选项。

定义条件消息

条件消息直接与选项关联。向选项添加条件消息时,如果用户选择该选项,则会向用户显示该消息。

控制问题流程

您可以在选择特定选项后定义用户将看到的问题的下一个问题

  1. 在选项创建或编辑表单中,选择相应字段中的 下一问题
  2. 如果没有定义下一个问题,系统将遵循默认顺序。

API 端点

提交用户响应

URL: /api/onboarding/responses

方法: POST

参数

  • question_id(整数,必需):已回答问题的 ID。
  • response_id(整数,可选):选择选项的 ID(对于选择问题)。
  • response(字符串,可选):用户的响应(对于文本问题)。

请求示例

POST /api/onboarding/responses
Content-Type: application/json

{
  "question_id": 1,
  "response_id": 5,
  "user_id": 123
}

响应示例

{
  "next_question": {
    "id": 2,
    "text": "What is your age?",
    "type": "text",
    "options": []
  },
  "conditional_message": {
    "message": "Thank you for choosing this option. Here's a personalized message."
  }
}

获取用户响应

URL: /api/onboarding/user-responses

方法: GET

参数

  • user_id(整数,必需):用户ID。

请求示例

GET /api/onboarding/user-responses?user_id=123

响应示例

{
  "responses": [
    {
      "question_id": 1,
      "question_text": "What is your name?",
      "response": "John",
      "response_id": null,
      "option_text": null
    },
    {
      "question_id": 2,
      "question_text": "What is your favorite color?",
      "response": null,
      "response_id": 5,
      "option_text": "Blue"
    }
    // Other responses...
  ]
}

用法示例

基本入门流程

  1. 用户开始入门流程。
  2. 应用程序调用端点发送用户的回答。
  3. 后端返回下一个问题和任何条件消息。
  4. 前端显示问题和处理用户的回答。
  5. 流程继续,直到没有更多问题。

显示条件消息

  • 当用户选择带有条件消息的选项时,该消息会在API响应中返回并可以立即显示。

根据回答控制流程

  • 通过在选项上设置下一个问题,您可以引导用户进入入门流程的不同路径,创建个性化的体验。

许可证

OnboardingPackage遵循MIT许可证