不幸的是,没有办法在Intercom.io中用标签创建用户,所以我正在尝试编写一些代码来查找Intercom中的现有标签,如果在那里,则将用户添加到该标签,如果不是,请创建标记并将用户添加到其中。我通过查看python-intercom库的文档尝试了几种不同的变体,但是存在冲突的方法(Intercom.update_tag与Tag.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])
我需要更改什么才能让标记生效?
答案 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)
另外,如果您仍然遇到问题,请随时给我们一个对讲机的喊叫,我们可以帮助您。