在 Python 中为 Intercom.io 用户创建/更新标签



不幸的是,没有办法在 Intercom.io 中使用标签创建用户,所以我正在尝试编写一些代码来查找对讲机中的现有标签,如果存在,则将用户添加到该标签,如果没有,请创建标签并将用户添加到其中。通过查看 python-intercom 库的文档,我已经尝试了几种不同的变体,但是存在冲突的方法(Intercom.update_tag 与 Tag.update),但尚未奏效。

以下是在对讲机中创建用户的方式(这有效):

import time
from members.models import Member
from intercom import Intercom, Tag
Intercom.app_id = settings.INTERCOM_TEST_APP_ID
Intercom.api_key = settings.INTERCOM_TEST_API_KEY
member = Member.objects.get(email="exampleemail@example.com")
Intercom.create_user(
    email=member.email,
    user_id=member.email,
    name="%s %s" % (member.first_name, member.last_name),
    created_at=int(time.time()),
    city_name=member.city,
    last_seen_ip=member.last_ip,
 )

以下是我目前必须查找并创建或更新标记的内容,这些标记不会触发任何错误,但不会成功标记用户:

tag = Intercom.get_tag(name=member.referral_code)
if tag['id'] != None:
    Intercom.update_tag(member.referral_code, "tag", user_ids=[member.pk])
else:
    Intercom.create_tag(tag, "tag", user_ids=[member.pk])

我也尝试了以下变体,但它收到错误"描述符'更新'需要一个'dict'对象,但收到'unicode':

if Tag.find_by_name(member.referral_code) != 0:
    Tag.update(member.referral_code, "tag", user_ids=[member.pk])
else: 
    Tag.create(member.referral_code, "tag", user_ids=[member.pk])

我需要更改什么才能使标记正常工作?

我叫Jeff,是Intercom的客户成功工程师之一。不幸的是,intercom-python 库仍在使用我们弃用的 V1 API,这可能会导致这里的一些混乱。在该库更新为使用我们较新的 REST API 之前,我建议您使用 python requests 库并直接调用我们的 API。我只有很少的python经验,但这样的事情应该让你开始走上正确的轨道。

import requests
from requests.auth import HTTPBasicAuth
import json
tags_url = 'https://api.intercom.io/tags'
app_id = 'YOUR_APP_ID'
api_key = 'YOUR_API_KEY'
headers = {'content-type': 'application/json', 'Accept': 'application/json'}
tag_name = 'My sweet tag'
# Get tags to then loop through
list_tag_response_as_json = requests.get(tags_url, auth=(app_id, api_key), headers=headers).json()
tag_names = [tag['name'] for tag in list_tag_response_as_json['tags']]
if tag_name not in tag_names
    # Create a tag
    tag_response = requests.post(tags_url, auth=(app_id, api_key), headers=headers, data={'name': tag_name})
# Tag users
tag_and_users = {'name':tag_name, 'users': [{'email': 'abc@example.com'}, {'email': 'def@example.com'}]}
tagged_user_response = requests.post(tags_url, auth=(app_id, api_key), headers=headers, data=tag_and_users)

另外,如果您仍然遇到问题,请随时在对讲机中给我们喊话,我们可以在那里为您提供帮助。

最新更新