源函数

源函数允许您从任何第三方应用程序收集数据,而不必担心设置或维护任何基础设施。

所有函数都在工作区中缩小,因此其他工作区的成员无法查看或使用它们。

所有客户计划类型均可使用该功能,并免费分配使用时间。阅读更多关于功能使用限制,或者看到您的工作空间的功能使用统计

创建源函数

  1. 从工作区转到目录并单击函数选项卡
  2. 点击新功能
  3. 选择源函数并点击建造

小费:想看一些示例函数吗?在Functions UI或开源软件中查看可用的模板段函数库。(贡献欢迎!)

当你点击建造,将出现代码编辑器。使用编辑器为函数,配置设置和测试功能的行为编写代码。

功能编辑器”></p>
        <h2 id=代码源函数

源函数必须具有onRequest ()函数的定义。对于发送到该函数的webhook的每个HTTP请求,该函数按段执行。

异步函数onRequest(请求,设置){//处理传入的数据}

onRequest ()函数接收两个参数:

  • 请求—描述传入的HTTP请求的对象。
  • 设置——组设置对于这个功能。

稍后我们将了解更多关于设置的内容,让我们首先了解如何处理传入的请求。

解析请求的JSON正文,使用Request.json()如下面的例子中的方法。

异步函数onRequest(请求){常量身体=请求json()安慰日志(你好,身体的名字)}

使用request.headers对象获取请求标头的值。因为这是一个实例标题,API在浏览器和Node.js中是相同的。

异步函数onRequest(请求){常量contentType=请求得到(内容类型)常量授权=请求得到(授权)}

要访问URL的详细信息,请参见Request.url.对象,这是一个实例URL

异步函数onRequest(请求){//访问一个查询参数。'简? name = ')常量的名字=请求searchParams得到(的名字)}

发送消息

您可以使用该消息向段API发送消息部分对象:

异步函数onRequest(请求){部分识别({用户标识:user_id,特征:{的名字:简料斗}})部分追踪({事件:页面查看,用户标识:user_id,特性:{page_name.:夏季收藏2020年}})部分集团({groupId:group_id,特征:{的名字:Clearbit}})部分({收藏:产品,id:product_id,特性:{的名字:耐克空气最大}})}
识别

使用识别呼叫将用户与他们的行为联系起来,并记录他们的特征。

部分识别({用户标识:user_id,特征:{的名字:简料斗}})

段.identify()方法使用以下字段接受对象:

  • 用户标识-数据库中用户的唯一标识符。
  • anonymousId-用户ID的伪唯一替代品,用于没有绝对唯一标识符的情况。
  • 特征与用户有关的对象,例如的名字或者电子邮件
  • 上下文-对象提供额外的信息,提供有用的上下文,如语言环境或者国家
追踪

跟踪调用记录用户执行的操作,以及描述该操作的任何属性。

部分追踪({事件:页面查看,用户标识:user_id,特性:{page_name.:夏季收藏2020年}})

Segment.track ()方法使用以下字段接受对象:

  • 用户标识-数据库中用户的唯一标识符。
  • anonymousId-用户ID的伪唯一替代品,用于没有绝对唯一标识符的情况。
  • 特性-带有与动作相关数据的对象,例如产品名称或者价格
  • 上下文-对象提供额外的信息,提供有用的上下文,如语言环境或者国家
集团

集团电话将用户与一个组联系起来——可以是公司、组织、帐户、项目、团队或其他。新万博app2.0下载

部分集团({groupId:group_id,特征:{的名字:Clearbit}})

段.group()方法使用以下字段接受对象:

  • groupId-数据库中组的唯一标识符。
  • 特征-与组相关的数据对象,例如group_name或者队名
  • 上下文-对象提供额外的信息,提供有用的上下文,如语言环境或者国家

页面要求每当用户看到网站页面时以及有关页面的任何其他属性时,记录。

部分页面({的名字:鞋目录,特性:{url:https://myshoeshop.com/catalog}})

Segment.page ()方法使用以下字段接受对象:

  • 用户标识-数据库中用户的唯一标识符。
  • anonymousId-用户ID的伪唯一替代品,用于没有绝对唯一标识符的情况。
  • 的名字—页面名称。
  • 特性-包含页面信息的对象,例如page_name.或者page_url
  • 上下文-对象提供额外的信息,提供有用的上下文,如语言环境或者国家
屏幕

屏幕上调用当用户看到屏幕记录时,相当于移动版,在你的手机应用程序中。

部分屏幕({的名字:鞋饲料,特性:{feed_items:5}})

段.Screen()方法使用以下字段接受对象:

  • 用户标识-数据库中用户的唯一标识符。
  • anonymousId-用户ID的伪唯一替代品,用于没有绝对唯一标识符的情况。
  • 的名字—屏幕名称。
  • 特性-对象与数据的屏幕,如screen_name
  • 上下文-对象提供额外的信息,提供有用的上下文,如语言环境或者国家
别名

别名叫做合并两个用户身份,有效地将两组用户数据连接为一个。

部分别名({previousId:old-email@example.com,用户标识:new-email@example.com})

段.alias()方法使用以下字段接受对象:

  • previousId—以前用户的唯一标识符。
  • 用户标识-数据库中用户的唯一标识符。
  • anonymousId-用户ID的伪唯一替代品,用于没有绝对唯一标识符的情况。

Set调用使用对象API.将对象数据保存到Redshift, BigQuery, Snowflake或Segment支持的其他数据仓库。

部分({收藏:产品,id:product_id,特性:{的名字:Nike Air Max 90,大小:11.}})

段.set()方法使用以下字段接受对象:

  • 收藏——集合名称。
  • id-对象的唯一标识符。
  • 特性- 具有自由形式数据的对象。

运行时和依赖项

函数使用Node.js 10.x。

函数目前不支持导入依赖项,但您可以接触部分的支持请求添加一个。

默认情况下,以下依赖项安装在函数环境中。

只有加密node . js模块包括(暴露为加密)。其他内置Node.js模块目前无货。

缓存

每个函数的全局缓存在缓存名称空间。有以下功能:

  • 缓存。负载(钥匙:字符串,ttl:number, fn: async () => any): Promise
    • 获得提供的缓存值钥匙,如果值丢失或过期,则调用回调函数。的ttl是该值可以缓存的最大持续时间(以毫秒为单位)。如果省略或设置为-1,该值将没有有效期。但是,不能保证某个值在提供的持续时间内会被保留在缓存中。缓存空间是有限的,因此尽量减少缓存值大小将提供更高的缓存命中率。
  • cache.delete(关键:字符串):空白
    • 强制删除与的关联值钥匙

下面的例子通过缓存获取一个JSON值,只在需要时调用回调:

常量ttl=5*60.*1000/ / 5分钟常量=等待缓存负载(mycachekey,ttl,()=>{常量res=等待获取(http://echo.jsontest.com/key/value/one/two)常量数据=等待resjson()返回数据})

创建设置和秘密

设置允许您将可配置变量传递给函数,这是传递敏感信息(如安全令牌)的最佳方式。例如,您可以使用设置作为占位符,使用API​​端点和API键等信息。这样,您可以使用相同的代码,以针对不同的目的使用不同的设置。在工作区中部署函数时,系统会提示您填写这些设置以配置该功能。

首先,添加一个设置设置代码编辑器中的选项卡:

Settings选项卡”width=

点击添加设置添加新设置。

添加设置对话框”></p>
        <p>您可以配置有关此设置的详细信息,该详细信息更改了使用函数的任何人将其显示的方式:</p>
        <ul>
         <li><strong>标签</strong>- 设置的名称,用户在配置功能时看到。</li>
         <li><strong>名称</strong>- 在功能的源代码中使用的设置的自动生成名称。</li>
         <li><strong>类型</strong>- 设置的类型的值。</li>
         <li><strong>描述</strong>—可选描述,显示在设置名称下方。</li>
         <li><strong>要求</strong>—启用此选项,以确保没有值就不能保存设置。</li>
         <li><strong>加密</strong>- 启用以加密此设置的值。使用此设置进行敏感数据,如API键。</li>
        </ul>
        <p>当您更改值时,正确的预览会更新,以显示设置的外观和工作方式。</p>
        <p>点击<strong>添加设置</strong>保存新设置。</p>
        <p>保存设置后,它将出现在<strong>设置</strong>选项卡表示函数。您可以从这个选项卡编辑或删除设置。</p>
        <p><img src=

接下来,填写此设置的值测试选项卡,以便我们可以运行函数并验证已通过正确的设置值。

注意,这个值仅用于测试函数。

设定试验值”width=

现在我们已经设置好了我们的设置并填充了测试值,我们可以添加代码来读取它的值并运行我们的函数:

异步函数onRequest(请求,设置){常量apikey.=设置apikey./ / = >“super_secret_string”}

在工作区中部署源功能时,系统会提示您填写设置以配置源。稍后您可以通过导航到源功能的源设置页面来访问这些设置。

源功能设置”></p>
        <h2 id=测试源功能

您可以通过两种方式直接从编辑器中测试代码:通过通过Webhook接收真实HTTP请求,或通过从编辑器中手动构造HTTP请求。

使用webhooks测试源函数的好处是所有传入的数据都是真实的,所以您可以在模拟生产环境的同时测试行为。

用webhook测试源函数

你可以通过手动发送请求(使用任何HTTP客户端,如cURL或Insomnia)来使用webhook来测试源函数,或者通过将webhook粘贴到支持webhook的外部服务器(如Slack)。

在源函数编辑器中,从“通过webhook自动填充”对话框中复制webhook的URL。要触发源函数,请使用帖子方法,具有内容类型标题设置为应用/ JSON.或者Application / X-WWW-Form-Urlencoded

手动测试源函数

您还可以在编辑器中手动构造HTTP请求的头和主体,并使用这些数据进行测试,而不需要使用webhooks。

测试HTTP请求”width=

保存并部署该函数

构建完源代码函数后,单击配置要命名它,然后单击创建功能保存它。

一旦您这样做,源函数会出现在功能工作区目录中的页面。

如果您正在编辑一个现有的函数,您可以这样做保存不更新已部署并正在运行的函数实例的更改。

你也可以选择保存和部署保存更改,然后选择要用更改更新的已经部署的函数。您可能需要额外的权限更新现有功能。

Source functions日志和错误

您的函数可能会遇到您在测试期间错过的错误,或者您可能有意地在代码中抛出错误(例如,传入的请求缺少必需的字段)。

如果函数抛出错误,则立即停止执行。Segment捕获传入的请求,任何控制台记录所打印的函数和错误,并在函数的中显示此信息错误选项卡。可以使用此选项卡查找和修复意外错误。

错误日志”></p>
        <p>功能可以抛出<a href=错误或自定义错误,并且您还可以使用中添加日志中的其他有用的上下文安慰API.。例如:

异步函数onRequest(请求,设置){常量身体=请求json()常量用户标识=身体用户标识安慰日志(用户ID是,用户标识)如果(typeof用户标识= = !字符串||用户标识长度<8){错误(用户ID无效)}安慰日志(用户ID有效)}

警告:不要记录敏感数据,例如个人识别信息(PII),身份验证令牌或其他秘密。您应该特别避免记录整个请求/响应有效载荷。段仅保留100个最新的错误和最多30天的日志,但是错误选项卡对其他工作空间成员可见,如果他们有必要的权限。

错误类型

  • 坏的请求是由其他错误涵盖的代码抛出的任何错误。
  • 无效的设置:一个配置错误阻止Segment执行你的代码。如果这个错误持续了一个小时以上,接触部分的支持
  • 消息被拒绝:你的代码被抛出InvalidEventPayload或者ValidationError由于无效输入。
  • 不支持的事件类型:你的代码没有实现一个特定的事件类型(在轨道上()等)或扔了一个EventNotSupported错误。
  • 重试- 您的代码扔了retryerror.指示应该重试该函数。

段仅尝试再次运行源功能(如果是)重试发生错误。

源管理功能

源功能权限

函数有特定的角色,可以使用访问管理在分段工作区中。

访问函数的访问由两个权限控制角色:

  • 函数admin:创建,编辑和删除所有函数,或指定函数的子集。
  • 函数只读:查看所有函数或指定函数的子集。

你还需要额外的源管理启用源功能的权限,将目标函数连接到源,或将更改部署到现有功能。

编辑和删除源函数

如果你是工作空间的主人或者功能管理控件中可以管理源代码函数功能选项卡。

连接源函数

你一定是个工作空间的主人或者源管理在工作区中连接函数的实例。

函数选项卡,点击连接源码并按照提示在工作区中设置它。

一旦配置,找到webhook URL -在概述或者设置→端点页面。

将此URL复制并粘贴到上游工具或服务中以将数据发送到此源。

源函数的常见问题

入网钩的最大有效载荷是多少?

2 mb。

是否有函数执行时间限制?

是的,函数应该在5秒内执行。

最后更改:2021年2月1日



开始使用细分

细分是将网站和移动应用数据整合到300多个分析和增长工具的最简单方法。
或者
创建免费帐户