常见问题
遇到问题了吗?不用担心,答案都在这。
归类目录
全站搜索

    n8n 串接范例:如何获取 LINE 官方帐号好友 user ID(UID),将信息保存在 Ragic 表单上?

    目录

    前置准备

    步骤 1:架设 n8n 并安装节点

    步骤 2:启用 LINE Messaging API

    步骤 3:设计 LINE 事件纪录表

    步骤 4:设计 LINE 客户通信录

    第一阶段:获取并记录 LINE 客户信息

    步骤 5:n8n 上的 LINE 触发节点

    步骤 6:请求用户名称与头贴

    步骤 7:将事件填入 Ragic 表单

    第二阶段:新客户自动抛转通信录

    步骤 8:检查是否为新客户

    步骤 9:拆分查询结果

    步骤 10:判断是否抛转

    步骤 11:触发抛转单击钮

    第三阶段:测试并启用自动化流程

    步骤 12:测试自动化流程

    步骤 13:启用自动化流程

    进阶设计:自动传送专属登录链接

    步骤 1:修改“客户通信录”表单

    步骤 2:设置传送数据登录链接单击钮

    如果你常用 LINE 与客户沟通业务往来、传送帐单、确认预约细节、提醒重要事项……),觉得手动操作(一笔笔整理帐单或预约细项、进 LINE 后台找到指定客户帐号、传送信息给对方)太麻烦,希望找到更自动化、效率更高的方法,Ragic 的“传送实时信息”功能是个不错的选择。

    只要你的客户帐单、提醒事项,或预约信息 Ragic 表单上有一个“客户 LINE user ID”字段、设计好对应的“传送实时信息”单击钮,有需要时就可以一键传送客制化 LINE 信息给客户,一键传送多个信息也没问题。

    不过,客户的 LINE user ID(常简称为 UID,类似 LINE 的“电话号码、收讯地址”概念)并不容易获取。商家需要透过 LINE 官方帐号(而非私人帐号)在客户加好友、互动时,运行特定步骤,才能获取 UID;否则即使是客户本人,也查看不到这项信息。

    在这篇文章中,我们将演示一种不写程序、透过 n8n 串接,捕捉 LINE 官方帐号好友的 UID,并且自动让这些 UID 信息统整在 Ragic 表单上(如下图)的方法。

    要做到这样的效果,需要像是下图这样的 n8n 自动化串接流程:

    你可以点击这里下载已经设置好的自动化流程模板,让你能够更轻松地单击照接下来的完整步骤参阅设计。

    这个自动化串接流程可以将所有把你的官方帐号加入好友、传送信息的纪录通通集成到一张“事件纪录表”。并自动透过抛转搭配“字段值不可重复”的设置,将事件记录表上所有出现的 LINE user ID 信息统整归纳到“客户通信录”表单。

    这是目前所知方法中,不需要写程序,但作用相对完整的一种,可以自动获得一份 LINE 通信录,也包含 UID、头贴、LINE 昵称等信息。

    不过,它还无法自动获取 UID 对应的真实客户姓名——这通常需要客户自己回讯说明或填表提供,也可能需要我们手动集成到表单上。

    如果你希望能够实现后续在客户通信录建檔时,由系统同步发出一则信息,请客户提供姓名或其他通信数据,让你在数据库内更具体地利用,请点击这里查看相应的进阶设计教学。

    由于你需要自行架设 n8n 服务器才能够使用 Ragic、LINE Messaging 等必要节点,如果你评估架设起来比较麻烦,那么可以参阅使用 Make 集成。虽然它还没有办法简单地做到自动抛转等功能,但在设计上会比较方便。

    前置准备:准备 n8n、LINE 与 Ragic

    步骤 1:架设自托管 n8n 服务器并安装 Ragic 与 LINE Messaging 节点

    请参阅这里的设置步骤,架设一个自托管的 n8n 服务器,并安装我们开发的 Ragic Nodes。

    并且,也请同时透过以下的 npm package name 安装 LINE Messaging 社群节点,以确保 LINE Messaging API 能够运作:

    @aotoki/n8n-nodes-line-messaging

    步骤 2:启用 LINE Messaging API

    为了让 LINE 可以接收到来自 Ragic 的信息,并且传送信息给客户,我们需要透过 LINE Messaging API 来为我们运行自动化流程。

    如果你从未做过相关设置,请参阅请我们写的这篇教学来打开 Messaging API。

    步骤 3:在 Ragic 设计“LINE 事件纪录表”

    首先,我们要在 Ragic 创建一张“事件纪录表”,我们希望这张表单可以让我们知道官方帐号发生了哪些“事件”——一般是有新客户将官方帐号加入好友,或者是收到新的信息等等。让计算机帮我们获取做这件事的人的信息,除了 user ID 以外,也包括对方在 LINE 上显示的昵称,甚至是头贴。

    因此它看起来通常会像这样:

    步骤 4:设计“LINE 客户通信录”并设置抛转

    在事件纪录表中,一个客户可能会有多笔事件数据——他们可能传送多则信息,甚至有可能多次解除、加入官方帐号好友。为了更有效率地整理数据,我们需要制作一个“一位客户只会有一笔数据”的通信录,再将事件数据抛转至通信录上。

    你可以直接拷贝事件纪录表的表单设计,再调整设计、加入需要的字段,只要记得在通信录中为 user ID 字段加入不可重复的属性,就能够确保一个客户在这张表单中只会有一笔数据了。

    接下来,就可以设置从“事件纪录表”抛转到“客户通信录”的流程了。请到事件纪录表中,直接参阅下图制作一个抛转单击钮:

    第一阶段:获取 LINE 好友信息并记录到 Ragic

    步骤 5:在 n8n 设置 LINE 的触发节点

    我们将会使用 LINE Messaging 的触发节点。你首先需要链接手头上的 LINE 官方帐号:

    将步骤 2 获取的 Channel Access Token 与 Channel Secret 填入即可。

    完成帐号链接后,你可以选取要触发自动化流程的动作,我们将会以“follow”和“message”为例,也就是说,当你的官方帐号收到新好友的跟踪,或者是来自好友的信息,都会触发后续的自动化流程。

    最后,由于触发端的运作方式是“Webhook”,它就像是把“鱼钩”挂在 LINE 上,当 LINE 上有人传了信息,n8n 就会开始触发后续动作。

    你需要先获取 n8n 提供的 Webhook。n8n 提供“Test URL”和“Production URL”,两者的差异在于,前者只在你手动“Execute step”或“Execute workflow”时起作用,适合测试阶段时使用;后者则是在自动化流程发布后,便会持续把鱼饵挂在 LINE 上,一有动作就会马上反应。

    在测试阶段时,请确保使用的是 Test URL,单击一下即可把该 URL 拷贝起来:

    接下来,进入 LINE 的开发者后台(Developers Console),选择你的官方帐号后,在 Messaging API 里找到“Webhook URL”,将链接贴上,并打开下方的“Use webhook”。

    Webhook URL 下的“Verify”能够验证这个 Webhook 是否真的起作用,不过如前述说明,Test URL 只在测试阶段、手动触发自动化流程时起作用,为了验证,请先前往 n8n 点击“Execute step”让 Webhook 试行。

    当 n8n 显示“Listening for test event”时:

    回到 LINE 开发者后台单击下 Verify,就能收到“Success”信息了。当你看到这则信息,代表你的触发端已经设置完成。

    不过,后台的这个 Verify 只是让 LINE 试着敲敲看 n8n 的门,确认找到的地址是对的。为了设置后续的节点,我们需要实际让 LINE 将我们的信息传递给 n8n。请在 n8n 再次单击下 Execute step 后,传个信息给你的官方帐号。

    n8n 这次会拿到包含你的 UID、信息内容等真实信息。这份数据非常重要,因为接下来,我们需要用这组 UID 向 LINE 换取你的显示昵称与头贴。

    步骤 6:向 LINE 服务器获取用户名称、头贴等信息

    若单纯依靠上一步骤的 LINE Messaging 触发节点,我们获取的信息其实非常有限——我们知道事件是由哪个 UID 发生,但不知道这个 UID 对应的用户名称等。因此我们需要透过收到的 UID,回头再向 LINE 的 Messaging API 请求更多这个 UID 对应的信息。

    在这一步,我们会利用 n8n 内置的的 HTTP Request 动作节点来进行请求:

    要向 Messaging API 获取用户信息的句法是 GET,而请求的 URL 是:

    https://api.line.me/v2/bot/profile/{userId}

    其中的 {userId} 就是触发端接收到的 user ID,因此要设置成这样:

    在 LINE 上,光有 UID 还不足以查询用户信息,还需要向 Messaging API 证明你有权限访问对应 LINE 官方帐号的数据。

    你可以把前面使用过的 Channel Access Token 想成一把“钥匙”。向 Messaging API 查询 UID 对应的用户信息时,需要一并提供这把钥匙,LINE 才会确认你有权限获取对方的昵称、头贴等数据。

    要附上这把钥匙,请先勾选 Send Headers,并在 Headers 中新增一个 Parameter,依照下列方式设置:

    Name:Authorization

    Value:Bearer {你的 Channel access token}

    设置完后,这个动作节点会看起来像是这样:

    你可以藉由上一步的测试数据,再单击下这个节点的 Execute step,若设置无误的话,就会看到自己的 UID、显示名称与头贴都出现在了右侧的 Output。

    步骤 7:将 LINE 的事件填入 Ragic 表单

    搜集完需要的信息后,就能开始整理到 Ragic 表单上了。

    请在 n8n 上使用 Ragic 动作节点内的“Create New Data”动作,并在 Method 上选择“Field”,这会让我们在设置字段填入的内容时更加容易。在链接 Ragic 帐号之后,你会看到 Form 列表中出现数据库内的表单,并且在选取表单之后,就会显示表单内可以填入的字段了。

    将表单设置为我们先前设计的 LINE 事件纪录表后,就能在 Entries 处加入要填入信息的字段。如下图这样,直接用拖拉的方式将 HTTP 获取的 UID、显示名称、头贴,以及原先从 LINE 触发节点获取的事件种类等信息填入 Ragic 表单中,就完成这个节点的设置啰!

    同样地,完成节点设计后,单击下上方的 Execute step 就可以确认节点运作了:

    在右侧 Output 看到 SUCCESS 之后,回到设计好的 Ragic 表单,就能看到新的数据出现在表单中啰!

    第二阶段:判断新旧客户并自动创建客户通信录

    步骤 8:检查客户是否已在通信录中

    为了让自动化更彻底,我们希望 n8n 在收到信息时还能帮我们自动判断:如果这位客户是新面孔,就自动运行抛转建檔;如果是老客户,则不重复动作。为了做到这件事,我们在让 n8n 帮忙记录事件后,就要再请 n8n 帮我们检查:这个 UID 在客户通信录中是否已经有数据了?

    首先,创建一个 Ragic 节点,并设置为 Read Data(读数据)——要求 n8n 前往“客户通信录”中,使用刚收到的 LINE UID 进行查询。

    你可以直接在该节点中,设置检查先前设计的客户通信录,并将来自 LINE 触发节点的 UID 拖动到 Condition 上,这会让 n8n 用这串 UID 搜索是否已经建檔过。

    这时可以单击下 Execute step,再用先前的测试数据试试看,若表单内没有符合的数据,右侧的 Output 就会如下图显示“This is an item, but it's empty.”,代表 Ragic 有运行查询,但没有找到符合条件的数据:

    我们也建议你先尝试点击先前设计的抛转单击钮之后,再尝试运行一次节点,就能看到右侧出现查询到的客户数据了:

    步骤 9:将查询结果拆分为单笔纪录

    当我们请 n8n 去 Ragic 查询数据时,Ragic 会把所有找到的结果打包成一整袋(在程序里称为一个物件),即便袋子里其实只有一笔数据也一样。但 n8n 习惯把数据像排队一样,一笔一笔分开处理(在程序里称为数组)。

    为了让 n8n 更容易运行后续操作,我们需要先帮它“拆包裹”,把 Ragic 打包好的数据拆开,变成一笔笔独立的排队数据。为此,请直接创建一个 Code 节点,并设置语言为 Javascript,直接拷贝并贴上以下这段转换代码:

    const data = $input.first().json;
    const result = [];
    
    // 抓取 Object 中的所有 key (例如 "1", "2") 并将里面的内容推入入数组
    for (const key of Object.keys(data)) {
      result.push({
        json: data[key]
      });
    }
    
    return result;
    

    设置完后,看起来会像是这样:

    不过,由于这段程序代码在“Read Data 没有找到数据”的情况下,就不会引出任何数据,并使工作流程直接中断,无法运行后续动作。

    因此,你需要在 Settings 中,将“Always Output Data”打开,这会使其在没有任何数据的情况下,也能将空的结果传递给后续节点。

    完成这两个设置后,你可以分别尝试两种测试,首先,你可以先将自己的 UID 加进客户通信录中:

    并透过 Execute step 测试到这个节点,你可以看到,即便右侧的引出结果与左侧的输入结果看起来大致相同,但原先以框图示显示的“袋子”已经不存在了,这代表数据有被确实拆分:

    接下来,将客户通信录的数据删除,再从 Read Data 节点开始点击 Execute step 到这个节点:

    即使没有任何数据,Code 节点会跟 Read Data 节点一样,也会引出一个“空值”让后续节点正常运行。

    步骤 10:判断是否运行抛转

    接下来,我们要让 n8n 自动依据查询的结果,决定要不要将新增的事件直接抛转到客户通信录。

    为此我们需要加入一个 IF 节点以让 n8n 运行条件判断。IF 节点可以根据设置的条件,运行 true(符合条件)和 false(不符合条件)两条路径。

    我们的设置逻辑是:检查“客户通信录”里面有没有指定的 UID,如果有,代表客户已经建过檔,不需要做任何事;如果没有,代表这名客户是新面孔,需要让 n8n 帮忙抛转。为此,请参阅上图的方式连接:true 后方不接任何节点、并在 false 后方连接一个 Ragic 动作节点,设置为 Execute Action Button(运行动作单击钮)。

    你可以先将自己的 LINE UID 抛转到客户通信录建檔,并再点击 Execute workflow 完整运行一次自动化流程。

    请依照下图的方式设置 If 节点,首先,直接将左侧的“_ragicId”拖曳到 Conditions:

    并且确定下方的检查条件为“Number → exists”,这样设置的意思是,如果前面的 Code 节点有回传 _ragicId(代表先前的 Read Data 动作节点有找到数据)则为 true,反之为 false。

    设置完成之后,就可以再测试 If 节点是否如预期运作了!你可以先留着自己在客户通信录内的数据,先简单单击一次 Execute workflow 并触发自动化流程,这时你应该能看到,If 节点上的 Output 中,True Branch 有一个结果、False Branch 则是空白的。

    关掉节点设置窗口,也能看到自动化流程是朝 true 的路线进行。

    接下来,你可以删除自己在客户通信录上的数据,再重新点击 Execute workflow 并触发自动化流程。这时你就能够看到 False Branch 中出现了一个空的 Output:

    整体的自动化流程是朝 false 的路线进行:

    确认两个情况的路线无误之后,就可以做最后一个节点的设置了。

    步骤 11:触发抛转单击钮

    打开我们刚刚创建的 Ragic 动作节点,由于我们需要让这个节点帮我们自动点击“事件纪录表”里的“抛转至客户通信录”,因此请参阅下图设置 Form 与 Action Button:

    那么,要怎么让 n8n 知道该点击哪笔数据里的单击钮呢?其实,透过我们先前请 n8n“创建事件纪录”的动作,就能找到要点击抛转的数据编号了。你可以在编辑画面中,往前找到创建数据的 Ragic 动作节点,例如范例中的节点名称就是“Ragic”:

    这时,再次打开运行动作单击钮的 Ragic 节点,就能从左侧找到这个名称,展开之后,就能将它的“ragicId”拖曳到 Record Index 了。

    第三阶段:测试并正式启用自动化流程

    步骤 12:测试自动化流程

    接下来,将所有表单数据删除,从头开始跑一次完整流程吧。首先,直接在 n8n 上点击“Execute workflow”,让 n8n 开始等待 LINE 上的新好友或信息:

    接下来,在 LINE 上把你的官方帐号加为好友,或是传送一则信息:

    回到 n8n,就能看到所有节点都运作完毕了。

    同时,事件纪录表中也出现了你刚刚传送信息生成的数据:

    另一方面,也能看到 n8n 自动帮我们触发了抛转单击钮,在客户通信录中也能看到新的数据。

    那么,在不删除任何数据的状况下,再尝试触发自动化流程一次吧!这一次,你应该会看到 n8n 上显示自动化流程的运作方向是像这样,经过 If 节点后,就直接判定为 true。

    这时,进入事件纪录表中,就能看到自己的另一笔数据。

    但由于这个 UID 早已有被建檔过,因此再到客户通信录检查,也不会有新的数据生成。

    步骤 13:发布并启用自动化流程

    完成所有的设置后,就可以准备发布,让自动化流程正式上线了。请直接在 n8n 接口的右上角点击 Publish,并为这个自动化流程的第一个版本取名,再次单击下 Publish 后,就等同于正式启用了自动化流程。

    接下来,我们需要修改 Webhook URL,先前设置触发节点时,使用的是 n8n 提供的“Test URL”——它只在我们手动触发时才会接收事件,适合用来测试。不过我们实际使用时,需要让 n8n 持续监听 LINE 官方帐号上的任何风吹草动,因此,我们需要将 Webhook URL 切换为“Production URL”。

    首先,打开 LINE Messaging 触发节点,展开 Webhook URLs 后,拷贝 Production URL。

    接下来,进入 LINE 的开发者后台,选择你的官方帐号后,将 Messaging API 里的“Webhook URL”再改为刚刚拷贝的 Production URL。

    这时,直接点击 Webhook URL 下的 Verify,你应该能马上收到一个“Success”信息:

    这代表 n8n 已经开始持续监听 LINE 的事件了,不需要再手动触发自动化流程。

    Tips:如果你后续还需要针对自动化流程做任何修改,请记得再将 LINE 开发者后台的 Webhook URL 改为 n8n 上的 Test URL。

    进阶设计:自动传送数据链路,引导客户填写完整数据

    如果你希望除了 LINE UID 之外,还能主动获取客户的真实姓名、电话或 Email,可以利用 Ragic 的“传送实时信息”,让系统在客户建檔的瞬间,自动发送一份专属的“会员登录链接”给对方 。

    为了做到这件事,你需要调整 Ragic 里客户通信录的设计,并新增一个传送实时信息单击钮。

    步骤 1:修改“客户通信录”表单

    为了不让客户看到我们另外记录的备注等信息,你可以利用字段层级访问权限,确保没有登录的访客用户在打开登录链接时,看到的是相对清爽、单纯的登记接口。

    你可以将备注、显示名称、头贴、用户语系……等字段全部设置为“EVERYONE 无权限”:

    步骤 2:设置传送数据登录链接单击钮

    在完成字段层级访问权限的设置后,我们需要先制作传送实时信息单击钮,并实际发一遍登录链接以确认设计无误。

    打开传送实时信息的设置窗口后,请将信息种类设置为 LINE 信息,并且依序填入来自基础设计步骤 2 的 Channel access token、收讯人和内文。

    你可以直接使用“选择字段”模式来指定收讯人为“user ID”字段,并在内文中,使用 {{MAGIC_RECORD_LINK_WRITABLE}} 句法,让系统自动生成一个拥有编辑权限、效期为 14 天的链接。

    并且,为了做到“建檔时自动传送登录链接”,请一并确定有在进阶设置中勾选“保存时自动运行”和“只有第一次新增时自动运行”。

    保存单击钮后,由于动作单击钮的默认权限是“所有人都能点击”,为了避免客户误单击,请务必将 EVERYONE 的权限移除:

    接下来,你可以试着在自己的客户通信录数据中触发单击钮,就会在 LINE 上收到自己的那一份链接了:

    客户点入链接后,就只能看到简单的表单页内容,也只会看到需要他填写的字段,这能大幅提升填表意愿并保护数据隐私。

    由于我们只是将字段从访客用户的眼中隐藏起来,因此虽然表面上看不到 LINE UID、显示名称等内容,但等客户将数据填满之后,我们就能回到客户通信录上查看完整的信息:

    最后,再试一次完整的流程吧!首先,将自己在事件纪录表、客户通信录的数据完全移除后,再次触发 n8n 自动化流程:

    这时,n8n 会一路走完从事件纪录到自动抛转的所有节点。当 n8n 上的最后一个步骤完成时,你也会马上在 LINE 上收到属于自己的数据登录链接:

    确认数据链路没问题、尝试填完数据后保存,整套流程就完成了。

    提供回馈给 Ragic

    请告诉我们您的意见:(多选, 必填)

    请针对上方勾选项目提供详细说明:

    截屏能够让我们更清楚了解您的建议:

    感谢您的宝贵意见!

    马上登记
    免费试用 Ragic!

    用 Google 帐号登记

    立即科技 Ragic, Inc.
    02-7728-8692
    info@ragic.com
    台北市中正区南昌路二段81号9楼
    用户条款 | 隐私权政策