连接数据系统
用自有数据构建人群。连接 Zoom、Google Drive、Qualtrics 或 HubSpot,逐项确认 iMario 能读取哪些内容,再导入你选中的录制、问卷和文件。
只凭一段描述生成的人群,猜得再好也还是猜。用你自己的资料做依据,人群就不用再猜:它会用客户平时的说法回答,反映客户确实提过的顾虑和真正看重的事。
连接数据系统,就是把这些资料交给人群。iMario 直接从你们在用的系统里读取数据,读什么由你逐项确认,而且绝不会往这些系统里写回任何东西。
连接系统

打开 Create audience,点击 Connect a data system。弹窗里一共三步。
1. 选择系统。目录按数据导入后变成什么来分组,不按厂商类别分:
| 分组 | 导入后变成 | 系统 |
|---|---|---|
| Files & folders | 视文件内容而定 | Google Drive、SharePoint |
| Surveys & panels | 回答分布 | Qualtrics、Google Forms、SurveyMonkey、Typeform |
| Interviews & calls | 原话依据 | Zoom、Google Meet、Microsoft Teams、Gong、Fireflies、飞书、腾讯会议、Dovetail |
| Support & conversations | 客户主动说出的话 | Zendesk、Intercom |
| Customer records | 人群里有哪些人 | HubSpot、Salesforce、BigQuery、Snowflake、Shopify |
Google Meet 和 Microsoft Teams 的会议要从你的日历里选,而不是从录制列表里选。一来,这两家都不允许已登录的应用查询“我有哪些会议”;二来,参会人的邮箱地址也记在日历条目上,通话能对应到当时的那位客户,靠的正是这些地址。
还没开发完的系统显示 Coming soon,暂时不能选。列表里没有你们用的系统,就点 Ask for one,我们会记下你们用的是哪一个,按大家提需求的先后顺序开发数据连接。在那之前,可以先从系统里导出文件,直接拖进人群:CSV 也好,转写稿也好,读取效果都和连接导入的完全一样。
2. 确认读取范围。跳转之前,iMario 会把要申请的每项权限单独列成一行,用通俗的话写明,各带一个开关。逐项确认后,再到服务商自己的窗口里完成授权。

有些系统规定一个应用只能在单个组织内使用,所以没有现成的 iMario 公共应用可以直接授权。飞书、Qualtrics、Zendesk、Salesforce 和腾讯会议都是这样。连接这类系统时,卡片上会要你填写应用 ID 和密钥,并附上操作步骤的链接。ID 和密钥由你们自己的管理员在组织内部创建,不收费。这些凭证加密保存,只用来访问你们自己的账号。
3. 选择要导入的内容。页面列出账号里眼下有的内容(录制、对话、问卷、文件、联系人字段),列表较长时还会出现搜索框。勾选需要的内容就行。每一行的数量都是 iMario 按服务商自己返回的结果统计的,所以这里看到多少,实际就导入多少。
有三个系统,iMario 没法把里面的内容列给你看,要你自己来选:
- Google Drive:点击 Choose files in Google Drive,在 Google 自己的窗口里选文件。iMario 只能看到你选中的文件,Drive 里的其他内容一概看不到。
- Google Forms:点击 Choose forms in Google Forms,用同样的方式选表单。
- 飞书妙记:逐条粘贴妙记的链接。参见连接飞书。
点击 Import。
导入时会发生什么
连接系统只会把你勾选的内容导入一次。之后也不会背着你再去拉数据:导入完成后,iMario 不会轮询你的 Zoom、Drive 或 CRM。要不要让人群保持最新,由你在人群里自己决定,数据连接不会定时自动更新。
每一项只拉取一次,同一条录制、同一段会话、同一个文件都不会重复存储。文件进入来源列表的方式和手动上传完全一样:表格要映射各列,转写稿按段落读取。从这一步起,已连接的数据来源和直接拖进来的文件就没有任何区别了。
之后想导入更多内容,就再连接一次同一个系统,勾选新增的部分。
把原话和回答对应到具体的人
导入的文件只要能说明内容是关于谁的,就能落到已建好人群里的具体某个人身上。比如问卷用客户记录里的客户 ID 或邮箱做关联字段,服务商在录制里列出了参会人,客服会话里带着客户的邮箱地址。这些原话和回答会归到对应的那个人身上,下次再问到他,他就根据这些真实资料来回答,不再沿用旧的快照。认不出任何人的录制,仍然会影响整个人群的说话方式,只是不会归到任何人名下。
让人群保持最新
更新是在人群里做的,不是在数据连接里。目前的做法是在人群页面点击 Rebuild from latest customer records:系统会重新读取已连接 CRM 当前的数据,再加上旧人群用过的其他全部资料,构建出一个新的人群。旧人群和用它跑出的所有报告都保持原样;数据连接则转过去,改为给新人群提供数据。
新增的联系人会改变这个人群由谁组成,所以这里做成了手动点击的按钮,而不是定时任务。
导入的文件属于用它们构建的那个人群,这一点和上传的文件完全一样:你不删就一直保留,重建时也会重新读取。iMario 只会自动删除一种导入文件:中途放弃的 Create audience 流程留下的文件,也就是始终没变成人群的草稿。这些文件 30 天后清除。
断开连接
打开人群,找到已连接的数据来源,把它移除。某个系统导入的最后一个文件移除后,这个系统就断开连接了:导入的数据、保存的凭证,还有这些文件归到具体某个人身上的每一句原话、每一条回答,都会一起删除。只要有一步失败,就不会断开任何连接,系统也会如实告诉你,而不会在数据还在的时候说已经删干净了。
也可以随时从另一头撤销授权,在服务商自己的已安装应用设置里操作就行。如果想把 iMario 里的副本也一并删掉,两边都要做:在服务商那边撤销授权,只会停止以后的同步,管不到 iMario 这边已有的数据。
Zoom
Zoom 在 Interviews & calls 分组里。iMario 读取你选中的那些云录制的转写稿,用作人群的原话依据。
从添加、使用到移除应用的完整说明,参见连接 Zoom。
开始之前
- Zoom 套餐里包含 cloud recording(云录制),而且录制设置里已经打开了 audio transcript(音频转写)。打开这个设置之前录的内容没有转写稿,iMario 也没法替你生成。
- 你连接的是自己的 Zoom 用户账号。iMario 读取的是这个账号名下的录制,而不是整个组织的录制。
iMario 申请的权限
| 权限 | 用途 |
|---|---|
cloud_recording:read:list_user_recordings | 你的云录制列表,方便你挑选要用哪些 |
cloud_recording:read:list_recording_files | 每条录制包含的文件,用来找出带转写稿的那些 |
cloud_recording:read:meeting_transcript | 转写稿本身,也就是人群将要使用的原话 |
meeting:read:list_past_participants | 每次通话有哪些参会人,用来把通话对应到当时的客户 |
user:read:user | 你的 Zoom 账号,用来确定读取谁的录制 |
申请的权限就这些。除了录制和录制的参会人,iMario 不会读取你的其他会议内容,也不读聊天记录、联系人或账号设置,更不会加入、发起或录制任何会议。
连接
- 在 Create audience 里点击 Connect a data system,选择 Zoom。
- 看一下权限说明,点击 Connect to Zoom,会弹出 Zoom 窗口。
- 登录 Zoom,点击 Allow。
- 回到 iMario,页面会列出你最近 12 个月的云录制,带转写稿的已经勾选好。列表较长时可以先搜索,再勾选要用的录制。
- 点击 Import。以后新录的内容,要再连接一次 Zoom 并勾选,才能导入。
通话里有谁
iMario 读取每条录制的参会人列表,这样客户说的话才能对应到人群里的这位客户。Zoom 只认得出三类参会人:注册过的、从日历邀请加入的、登录了账号的。只凭一个会议链接直接进来的访客没有邮箱地址,他们说的话仍会影响人群的说话方式,但不会归到任何人名下。
断开 Zoom 连接
在 iMario 里把这个来源从人群中移除,同步过来的转写稿和凭证会一起删除。如果还想在 Zoom 那边撤销这个应用,进入 Zoom App Marketplace,打开 Manage → Added Apps,找到 iMario,点击 Remove。
Microsoft Teams
Teams 在 Interviews & calls 分组里。iMario 读取你选中的那些 Teams 会议的转写稿,用作人群的原话依据。
开始之前
- 会议期间开启了转写。只有通话中有人打开了转写,Teams 才会生成转写稿,事后没有任何办法补出来。
- Microsoft 365 管理员已经批准过一次 iMario。读取转写稿这项权限,Microsoft 规定必须由管理员同意,哪怕你读的只是自己的会议。第一个连接的人会看到“Need admin approval”(需要管理员批准),可以直接在这个页面上提交申请;管理员批准后,组织里的所有人都能正常连接。
- 租户允许通过 Graph 访问转写稿,并且带发言人标注。这是 Teams 管理后台里两个独立的设置,默认都是关闭的:在 Teams admin center(Teams 管理中心)里进入 Meetings → Meeting settings → Transcript API access,打开 Microsoft Graph access,再点击 Configure,打开 Include speaker attribution。第一项没开,Microsoft 会拒绝所有读取转写稿的请求,iMario 会明确提示你;第二项没开,拿到的转写稿里没有发言人姓名,这些话仍会影响人群的说话方式,却没法对应到说这句话的人。
- 会议在你自己的日历上。iMario 读取你发起或受邀参加的会议,而不是整个组织的会议。
iMario 申请的权限
| 权限 | 用途 |
|---|---|
Calendars.Read | 你的日历。Microsoft 只肯把这一份会议列表提供给已登录的应用,参会人的邮箱地址也记在这里 |
OnlineMeetings.Read | 日历条目对应的在线会议,用来找到它的转写稿 |
OnlineMeetingTranscript.Read.All | 转写稿本身,也就是人群将要使用的原话 |
offline_access | 导入过程中保持连接 |
申请的权限就这些。iMario 不会读取你的聊天记录、文件、邮件或同事的日历,也不会加入、发起或录制任何会议。
连接
- 在 Create audience 里点击 Connect a data system,选择 Microsoft Teams。
- 看一下权限说明,点击 Connect to Microsoft Teams,会弹出 Microsoft 窗口。
- 登录后点击 Accept。
- 回到 iMario,页面会列出你过去一年的 Teams 会议,最新的排在最前。列表较长时可以先搜索,再勾选要用的会议。
- 点击 Import。没有转写稿的会议什么也不会导入,会标为已跳过。
通话里有谁
转写稿里只用显示名称(display name)标出每位发言人。iMario 会去会议邀请里查出他们的邮箱地址,这样客户说的话就能归到人群里的这位客户身上。会议组织者算作调研方,他提的问题绝不会变成任何人的回答。邀请里的会议室也不会当成人来处理。
如果是周期性会议,你选的每一场只会导入当场录下的转写稿,不会把整个系列都带进来。
断开 Teams 连接
在 iMario 里把这个来源从人群中移除,导入的转写稿和凭证会一起删除。如果还想在 Microsoft 那边撤销这个应用,打开 myapplications.microsoft.com,找到 iMario,把它移除。
Google Forms
Google Forms 在 Surveys & panels 分组里。除了 Google Drive 已经在用的那项权限,它不再申请别的权限。
Forms API 没法列出你的表单,所以由 Google 的选择窗口来代替列表:点击 Choose forms in Google Forms,在 Google 自己的窗口里选好表单,iMario 能看到的永远只有这几份。Drive 里的其他内容一概看不到。
回答返回时只标着内部题目 ID,所以 iMario 会先把每份表单的题目读一遍,再用受访者实际看到的题目原文作为每一列的列名。网格题会按行拆成多列,每行一列,列名就是这一行的名称。
数据仓库:BigQuery 和 Snowflake
CRM 里只有销售接触过的客户,数据仓库里则是全部客户。要如实回答“我们的人群到底是谁”,通常得看数据仓库。
两者都只连接一张表,也就是客户表,因为数据仓库里没有现成的“客户”资源可以浏览。连接时填上表名,再勾选要用的列,做法和连接 CRM 完全一样。
BigQuery 申请的是 bigquery.readonly,直接读取表里的行,从不运行查询:BigQuery 里的查询是一个作业(job),创建作业需要的权限同时也能写入数据。读取行用不到这种权限,所以授权确认页上承诺的只读,是真正的只读。要填的是项目、数据集和表。
Snowflake 用的是程序化访问令牌(programmatic access token),由你在 Snowsight 的 Settings → Authentication 里为自己的用户生成。给这个令牌分配一个只读角色:真正限定它能访问哪些数据的,是这个角色,而不是 iMario。要填的是账户标识符、仓库、数据库、schema 和表。iMario 发出的永远只有 SELECT 语句。
gender、age 或 country 的列能自动识别;名为 birth_year 的列不能,这时 iMario 会告诉你这个文件需要做字段映射,而不会自己猜一种换算方式,再悄悄把错误的值写进人群。Shopify
Shopify 在 Customer records 分组里。它读取的是在你店里买过东西的人:他们在哪里、下过多少单、花了多少钱、你给他们打了哪些标签。
Shopify 里没有年龄和性别数据。所以 Shopify 导入的数据是描述客户的依据,不能用来框定人群由哪些人组成。它按邮箱地址对应到人群里已有的人,单靠它建不出人员名单。还需要人口统计信息的话,就把它和 CRM 或数据仓库搭配着用。
开始之前
- 在 Shopify 的 Dev Dashboard 里为自己的店铺创建一个应用并安装,然后把它给出的 Admin API 访问令牌粘贴到 iMario。这个令牌以
shpat_开头。 read_customers属于受保护的客户数据。应用必须先通过受保护数据的审批,Shopify 才会从正式运营的店铺返回客户记录。审批通过之前,连接能成功,但 Shopify 会拒绝读取,iMario 会如实告诉你这一点,不会报告说店里没有数据。开发店铺不用审批就能返回数据。
问题排查
Zoom:列表里没有任何录制。这个账号最近 12 个月没有云录制。检查一下套餐里有没有云录制。如果列出了录制,但标着 no transcript,就到 Zoom 录制设置里打开 audio transcript;这个设置只对打开之后的录制生效。
提示“Allow pop-ups for this site, then try again.”(允许本站弹出窗口后重试)。浏览器拦截了授权窗口。允许 iMario 弹出窗口后,再点一次连接。
提示“The connection timed out.”(连接超时)。授权窗口开着太久没操作,或者没完成就关掉了。从第 1 步重新开始。
提示“Could not read from this system.”(无法读取这个系统的数据)。连接成功了,但读取失败,通常是因为后来有人在服务商那边撤销了授权。断开连接后重新连接。
Teams 会议列表是空的。iMario 读取的是你过去一年的日历,而且只显示带 Teams 入会链接的条目。不在你日历上预约的会议,或者在其他平台上开的会,都不会出现在列表里。
Teams 连接时提示“Need admin approval”。Microsoft 365 规定,读取转写稿必须经管理员同意。可以直接在这个页面上申请批准,或者请管理员为整个组织批准一次 iMario。
Teams 转写稿已导入,却没有归到任何人身上。租户里关闭了发言人标注,所以转写稿里没有姓名。在 Teams admin center 的 Transcript API access 下打开 Include speaker attribution,然后重新导入。
Teams 提示“Graph API access to transcripts is disabled for this tenant.”(这个租户已禁用通过 Graph API 访问转写稿)。Teams 管理员关掉了所有应用读取转写稿的权限。iMario 这边没有任何办法绕过去,请管理员重新开启。
Shopify 提示“not approved to access the Customer object”。这个应用还没有通过受保护客户数据的审批。到 Dev Dashboard 里申请;iMario 这边没有任何办法绕过去。
Snowflake 提示“is not a valid Snowflake identifier”。数据库、schema 或表名里有标识符中不允许出现的字符。iMario 会直接拒绝把它拼进语句,而不是照样发出去碰运气。
Qualtrics 导入后要等一会儿才出现内容。Qualtrics 不直接返回回答,而是先生成一个导出文件,所以 iMario 会先发起导出任务,再等它完成。问卷很大时,可能要等上一分钟。