内部通信api的django集成
aa-intercom的Python项目详细描述
用于Intercomapi的django集成
aa对讲机包允许
- 将用户数据上载到对讲机,包括上次看到的功能
- 根据应用程序中发生的任何事件将数据推送到对讲机API
安装
若要使用,请将aa_intercom添加到INSTALLED_APPS,然后迁移项目。
设置模型
a a对讲机需要在用户模型中设置几个字段。要使其工作,您需要应用 aa_intercom.mixins.IntercomUserMixin到您的自定义用户模型(如果您没有自己的自定义用户模型集, 检查documentation)。 可以重载IntercomUserMixin.get_intercom_data()方法来更改发送到内部通信api的默认用户数据。
如果要使用对讲机上的“用户上次看到”功能,请在用户登录后立即执行以下任务:
from aa_intercom.tasks import push_account_last_seen_tasks push_account_last_seen_task.apply_async(args=[user.id], countdown=100)
配置
另一步是将事件类型添加到项目设置中,例如:
INTERCOM_EVENT_TYPES = ( ("example", _("Example Type")), ("generic", _("Generic Type")) )
最后一件事是在项目设置中指定对讲机凭据:
INTERCOM_API_ACCESS_TOKEN = "your access token"
确保有CACHES集合(请参见:docs), 而且由于这个应用程序使用Celery,您需要对其进行配置。
要为对讲机用户id提供id前缀,请将INTERCOM_ID_PREFIX设置为所需的值。
使用内部事件模型
如果要向内部通信api发送任何类型的事件数据,请创建一个intercovent的实例 所需信息,例如:
IntercomEvent.objects.create( user=request.user, type="generic", text_content=post.content, content_type=ContentType.objects.get_for_model(Post), object_id=post.id)
然后它将自动发送到内部通信api。不幸的是,内部通信API经常出现故障, 因此,要确保发送所有事件,请设置运行resend_intercom_events命令的cronjob 它将把所有剩余的interconnectevent对象推送到api。
发送未注册的用户数据
如果需要上载未注册的用户数据,aa_intercom.tasks.push_not_registered_user_data_task任务 可以使用(email和name键是必需的),例如:
push_not_registered_user_data_task.apply_async(args=[{ "email": "test@arabel.la", "name": "Foo Bar", "pseudonym": "foobar" }])
命令
- resend_intercom_events-重新发送所有事件(如果出现问题,应长期运行)
支架
- Django 1.11
- Python2.7,3.6