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

时间:2015-03-14 20:23:58

标签: python-2.7

不幸的是,没有办法在Intercom.io中用标签创建用户,所以我正在尝试编写一些代码来查找Intercom中的现有标签,如果在那里,则将用户添加到该标签,如果不是,请创建标记并将用户添加到其中。我通过查看python-intercom库的文档尝试了几种不同的变体,但是存在冲突的方法(Intercom.update_tagTag.update),并且还没有任何工作。

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

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])

我需要更改什么才能让标记生效?

1 个答案:

答案 0 :(得分:3)

我的名字是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)

另外,如果您仍然遇到问题,请随时给我们一个对讲机的喊叫,我们可以帮助您。