moesif / moesif-symfony
Moesif Symphony 集成包
Requires
- php: >=7.2.5
- symfony/framework-bundle: ^5.0
This package is auto-updated.
Last update: 2024-09-04 13:28:40 UTC
README
由 Moesif 提供,Moesif 是一个 API 分析 和 API 赚钱 平台。
Moesif 的官方 PHP Symfony SDK 允许您自动捕获 API 流量并将其发送到 Moesif API 分析平台。
如果您是 Moesif 的初学者,请参阅 我们的入门资源 以快速开始使用。
支持的 Symfony 版本
该 SDK 目前支持所有 Symfony 5.x 版本。
先决条件
在开始使用此 SDK 之前,请确保您有以下内容
获取您的 Moesif 应用程序 ID
登录到 Moesif 门户 后,您可以在入门步骤中获取您的 Moesif 应用程序 ID。登录后,您可以随时按照以下步骤从 Moesif 门户获取应用程序 ID
- 选择账户图标以显示设置菜单。
- 选择 安装 或 API 密钥。
- 从 收集器应用程序 ID 字段复制您的 Moesif 应用程序 ID。
安装 SDK
Moesif Symfony SDK 通过 Composer 提供,它是 PHP 的依赖管理器。在安装 Composer 后,执行以下命令
$ composer require moesif/moesif-symfony
否则,请手动将 moesif/moesif-symfony 添加到您的 composer.json 文件 中。
启用 SDK
按照以下步骤启用 SDK
-
在您的项目
config/packages目录中,添加一个moesif.yaml文件。此文件包含您的配置选项。 -
配置文件要求您至少 指定您的 Moesif 应用程序 ID。以下是一个示例
moesif: moesif_application_id: 'YOUR_MOESIF_APPLICATION_ID.' debug: false options: max_queue_size: 50 max_batch_size: 25 hooks_class: 'App\Configuration\MyMoesifHooks'
有关更多配置选项,请参阅 YAML 配置选项。
配置 SDK
查看可用的 配置选项,了解如何根据您的用例配置 SDK。
故障排除
有关帮助您解决常见问题的通用故障排除指南,请参阅 服务器故障排除指南。
其他故障排除支持
配置选项
以下部分描述了您可以在 moesif.yaml 中定义的可用的配置选项。
applicationId(必需)
一个字符串,用于标识您的应用程序。debug
设置为 true 以将调试消息打印到调试和错误日志中。这可以帮助您解决集成问题。
options
如果设置,则包含各种选项,用于配置 SDK 以超出默认设置。
在此对象中,您可以设置以下选项
max_queue_size
如果设置,则覆盖在发送数据到 Moesif 之前默认的 max_queue_size。
max_batch_size
如果设置,则覆盖发送到 Moesif 的默认 max_batch_size。
hooks_class
如果设置了,则必须是指定 MoesifHooksInterface 的实现。
用户钩子类选项
您可以使用钩子覆盖并自定义插件中的某些功能。例如,创建一个名为 MyMoesifHooks.php 的文件并实现 MoesifHooksInterface
use Moesif\MoesifBundle\Interfaces\MoesifHooksInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class MyMoesifHooks implements MoesifHooksInterface { // your implementation of every method follows. }
请参考 示例实现。
请确保将配置选项 hooks_class 设置为您的实现文件路径。
您需要实现的 MoesifHooksInterface 的方法如下
identifyUserId
可选。
此函数接受 $request 和 $response 参数并返回一个用户 ID 字符串。这使 Moesif 能够将 API 请求归因于单个唯一用户,以便您了解谁调用您的 API。您可以使用此功能与 identifyCompanyId 同时使用,以跟踪个人客户以及他们所属的公司。
identifyCompanyId
可选。
此函数接受 $request 和 $response 参数并返回一个公司 ID 字符串。如果您有 B2B 业务,此方法使 Moesif 能够将 API 请求归因于特定的公司或组织,以便您了解哪些账户调用您的 API。您可以使用此功能与 identifyUserId 同时使用,以跟踪个人客户以及他们所属的公司。
identifySessionToken
可选。
一个接受 $request 和 $response 参数并返回会话或身份验证令牌字符串的函数。Moesif 通过处理您的 API 数据自动创建会话,但您可以通过 identifySessionId 方法覆盖此功能,如果您对结果不满意。
maskRequestHeaders
可选。
一个接受请求头参数的函数。参数是一个关联数组。该方法返回一个关联数组,其中包含移除或屏蔽的敏感请求头。
maskRequestBody
可选。
一个接受请求体参数的函数。参数是 JSON 的关联数组表示。该方法返回一个关联数组,其中包含任何请求体信息。
maskResponseHeaders
可选。
与 maskRequestHeaders 相同,但用于 HTTP 响应。
maskResponseBody
可选。
与 maskResponseBody 相同,但用于 HTTP 响应。
getMetadata
可选。
一个接受 $request 和 $response 参数并返回 $metadata 的函数。$metadata 是 JSON 的关联数组表示。
skip
可选。
一个接受 $request 和 $response 参数的函数。如果返回 true,则表示要跳过事件。跳过事件意味着 Moesif 不会记录该事件。
示例实现
以下示例展示了具有 MoesifHooksInterface 实现的 MyMoesifHooks.php 文件可能的样子。
<?php namespace App\Configuration; use Moesif\MoesifBundle\Interfaces\MoesifHooksInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class MyMoesifHooks implements MoesifHooksInterface { public function __construct() { } public function identifyUserId(Request $request, Response $response): string|null { return 'nihao1'; } public function identifyCompanyId(Request $request, Response $response): string|null { return $request->headers->get('X-Company-Id'); } public function identifySessionToken(Request $request, Response $response): string|null { return null; } public function getMetadata(Request $request, Response $response): ?array { return null; } public function skip(Request $request, Response $response): bool { return false; } public function maskRequestHeaders(array $headers): array { return $headers; } public function maskResponseHeaders(array $headers): array { return $headers; } public function maskRequestBody($body) { // this can be a string or array object. // because prior to php 8, can not declare union type (such as string|array) return $body; } public function maskResponseBody($body) { // this can be a string or array object. // because prior to php 8, can not declare union type (such as string|array) return $body; } }
示例
以下示例演示了如何添加和更新客户信息。
更新单个用户
以下示例展示了如何使用 updateUser 函数在 Moesif 中创建或更新用户配置文件。
metadata 字段可以包含任何您希望存储的客户人口统计信息或其他信息。
只需提供 user_id 字段即可。
有关更多信息,请参阅 有关更新单个用户的 PHP API 参考文档。
<?php use Moesif\MoesifBundle\Service\MoesifApiService; private $moesifApiService; public function __construct(MoesifApiService $moesifApiService) { $this->moesifApiService = $moesifApiService; } // metadata can be any custom object $data->metadata = array( "email" => "john@acmeinc.com", "first_name" => "John", "last_name" => "Doe", "title" => "Software Engineer", "sales_info" => array( "stage" => "Customer", "lifetime_value" => 24000, "account_owner" => "mary@contoso.com" ) ); $userData = [ 'user_id' => $data['userId'], 'user_email' => $data['userEmail'], 'company_id' => $data['companyId'], 'metadata' => $data['metadata'] ?? [], // Include metadata if provided // Add more fields as needed ]; $this->moesifApiService->updateUser($userData);
批量更新用户
您可以使用 updateUsersBatch 函数批量更新用户列表。
只需提供 user_id 字段即可。
有关更多信息,请参阅 有关批量更新用户的 PHP API 参考文档。
<?php use Moesif\MoesifBundle\Service\MoesifApiService; private $moesifApiService; public function __construct(MoesifApiService $moesifApiService) { $this->moesifApiService = $moesifApiService; } // metadata can be any custom object $data->metadata = array( "email" => "john@acmeinc.com", "first_name" => "John", "last_name" => "Doe", "title" => "Software Engineer", "sales_info" => array( "stage" => "Customer", "lifetime_value" => 24000, "account_owner" => "mary@contoso.com" ) ); $userDataA = [ 'user_id' => $data['userIdA'], 'user_email' => $data['userEmailA'], 'company_id' => $data['companyIdA'], 'metadata' => $data['metadata'] ?? [], // Include metadata if provided // Add more fields as needed ]; $userDataB = [ 'user_id' => $data['userIdB'], 'user_email' => $data['userEmailB'], 'company_id' => $data['companyIdB'], 'metadata' => $data['metadata'] ?? [], // Include metadata if provided // Add more fields as needed ]; $users = array($userDataA, $userDataB) $this->moesifApiService->updateUsersBatch($user);
更新单个公司
在Moesif中创建或更新公司资料,请使用updateCompany函数。
metadata字段可以包含任何您想存储的公司人口统计或其他信息。
仅需要company_id字段。
更多信息,请参阅PHP API 参考关于更新单个公司。
<?php use Moesif\MoesifBundle\Service\MoesifApiService; private $moesifApiService; public function __construct(MoesifApiService $moesifApiService) { $this->moesifApiService = $moesifApiService; } // metadata can be any custom object $data->metadata = array( "org_name" => "Acme, Inc", "plan_name" => "Free", "deal_stage" => "Lead", "mrr" => 24000, "demographics" => array( "alexa_ranking" => 500000, "employee_count" => 47 ) ); // Prepare company data for Moesif $companyData = [ 'company_id' => $data['companyId'], 'company_domain' => $data['companyDomain'], 'metadata' => $data['metadata'] ?? [], // Include metadata if provided // Add more fields as needed ]; $this->moesifApiService->updateCompany($companyData);
批量更新公司
要批量更新公司列表,请使用updateCompaniesBatch函数。
仅需要company_id字段。
更多信息,请参阅PHP API 参考关于批量更新公司。
<?php use Moesif\MoesifBundle\Service\MoesifApiService; private $moesifApiService; public function __construct(MoesifApiService $moesifApiService) { $this->moesifApiService = $moesifApiService; } // metadata can be any custom object $data->metadata = array( "org_name" => "Acme, Inc", "plan_name" => "Free", "deal_stage" => "Lead", "mrr" => 24000, "demographics" => array( "alexa_ranking" => 500000, "employee_count" => 47 ) ); // Prepare company data for Moesif $companyDataA = [ 'company_id' => $data['companyIdA'], 'company_domain' => $data['companyDomainA'], 'metadata' => $data['metadata'] ?? [], // Include metadata if provided // Add more fields as needed ]; $companyDataB = [ 'company_id' => $data['companyIdB'], 'company_domain' => $data['companyDomainB'], 'metadata' => $data['metadata'] ?? [], // Include metadata if provided // Add more fields as needed ]; $companies = array($companyDataA, $companyDataB) $this->moesifApiService->updateCompaniesBatch($companies);
如何获取帮助
如果您在使用此SDK时遇到任何问题,请尝试故障排除指南。如需进一步帮助,请联系我们的支持团队。
探索其他集成选项
探索Moesif的其他集成选项
