responsysinteractiverestapi的python客户端库
responsysrest的Python项目详细描述
responsys交互rest api python客户端
提供对responsysinteractiveapi的访问的python库。目前支持版本1.3版本6.33 e65150-15。
由于这是alpha软件,许多功能仍有待实现。以下是基于responseys文档名(而不是内部函数名)及其实现状态的每个功能的列表:
<表><广告>要求
- responsys交互帐户(请参阅操作方法)。
- 有效的responsys交互api用户名和密码。
- python(请参见如何)
- PIP(请参阅操作方法)
如何
注册responses interact,网址为https://www.oracle.com/marketingcloud/products/cross-channel-orchestration/index.html" rel="nofollow">https://www.oracle.com/marketingcloud/products/cross-channel-orchestration/index.html(非免费)。
安装python3和python包索引。
- OS X:建议以这种方式安装python3:http://docs.python-guide.org/en/latest/starting/install3/os x/" rel="nofollow">http://docs.python-guide.org/en/latest/starting/install3/osx/它应该将python3命名为单独的命令
python3
这个软件包是为python3.x开发的,但如果您愿意的话,应该可以在2.7上运行。
安装
在应用程序中使用的标准安装
pip install responsysrest
通过存储库克隆进行开发安装
如果您想帮助开发此软件包:
- 克隆此回购协议: git克隆git@github.com
- 创建虚拟环境 CD响应rest&;python-m venv venv&;source venv/bin/激活
- 在开发模式下通过源程序包安装:
pip install -e .
用法
- 导入responsyrest包
- 配置您的交互连接设置和凭据
- 实例化客户机
- 使用客户机
开始的最快方法是创建一个config.json
文件和一个secret.json
文件,其中包含您的配置和凭据信息。这个包附带了config.json
文件,但是您需要创建自己的secret.json
文件。您可以从包子模块配置
和
凭证
调用auto函数,它将遍历根目录以查找json文件。
config.json模板:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
secret.json模板:
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
如果它们是运行python的本地服务器:
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
如果不是,则包可以从json文件导入它们:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
然后实例化客户端:
client = r.Client(config, creds)
<表><广告>2
或5
客户端函数用法:
通常,库需要每个函数调用的记录列表(如果合适)。要将方法应用于一系列记录,请执行以下操作:
imported_csv_data = [
['EMAIL_ADDRESS_', 'COUNTRY_'],
['hey@test.com', 'US']
]
fields = imported_csv_data[0]
records = imported_csv_data[1:]
client.some_method(fields, records)
不要这样做:
for record in records:
client.some_method(fields, [record])
管理配置文件列表
检索帐户的所有配置文件列表
pip install responsysrest
0
pip install responsysrest
返回所有配置文件列表的词典列表:
pip install responsysrest
1
它与文件夹位置和所有字段名捆绑在一起,因此只需检索列表的列表:
pip install responsysrest
2
返回:
pip install responsysrest
3
或列表及其各自的文件夹:
pip install responsysrest
4
返回:
pip install responsysrest
5
更新配置文件列表
这是"在配置文件列表中合并或更新成员"功能。
pip install responsysrest
6
它需要三个位置参数:列表名称
,字段
和记录
。库不检查输入。如果客户端可以连接到responsys,您将从api得到一个有帮助的错误:
pip install responsysrest
7
pip install responsysrest
8
responsys需要大量上下文信息来将记录合并到现有列表中,因此此库为您选择了默认值。
这些可以用关键字参数更改。下面是所有关键字参数,其中所有默认值都是冗余传入的。您不需要设置这些值,除非您将它们从下面的默认值更改为:
pip install responsysrest
9
请注意,您发送的任何记录都必须在"字段"列表中包含一个字段,该字段的值等于match\u column\u name1
值(默认情况下为riid\u
)。因此,常见的配置文件列表更新可能如下所示:
pip install -e .
0
或
pip install -e .
1
对于单个记录,您可以传入一个字符串:
pip install -e .
2
使用riid检索配置文件列表的成员
pip install -e .
3
pip install -e .
返回列表中的完整记录。
基于查询属性检索配置文件列表的成员
pip install -e .
4
返回所提供记录的记录数据。需要列表名称
,记录ID
。列表名称是要从responsys interact实例中查找记录的名称。记录id是要用来标识记录的特定id。query属性是用于检索记录的id类型。如果未指定,则假定为客户ID。可用选项为:
要返回的字段应该是python列表数据对象,如果留空,它将返回所有字段:
pip install -e .
5
根据riid删除配置文件列表收件人
pip install -e .
6
从配置文件列表中删除记录。示例:
pip install -e .
7
管理配置文件扩展表
检索配置文件列表的所有配置文件扩展名
pip install -e .
8
返回与给定列表关联的配置文件扩展名表(也称为配置文件扩展名、配置文件扩展名列表或pets)。它还与文件夹位置和所有字段名捆绑在一起,因此要仅检索列表列表,或检索包含各自文件夹的列表,请使用:
pip install -e .
9
创建新的配置文件扩展表
创建新的配置文件扩展表。只需要您希望扩展的列表名称,但这将使用默认的文件夹位置和名称(从您的客户端配置)创建一个空白的配置文件扩展表。
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
0
示例:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
1
如果使用了样板配置中的默认值,则会创建一个contacts_list_pet
profile extension table extendingcontacts_list
在客户端配置指定的uifolder中(默认值为\uuu api-generated
),没有记录也没有非默认字段。
您也可以指定要使用的扩展名,但此函数是自定的,只允许您创建以正在扩展的配置文件列表的名称开头的配置文件扩展表。
此示例将创建一个扩展联系人列表的空配置文件扩展表
调用联系人列表扩展名
:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
2
您可以指定要放置它的文件夹以覆盖您的客户端配置:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
3
此外,您还可以将字段作为列表提供:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
4
如果不为每个数据类型指定(responsys interact)数据类型,则默认为str4000
。此默认数据类型可以用str500
、str4000
、integer
、number
或timestamp
:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
5
如果将列表作为列表或元组提供,则还可以指定列表中每个字段的字段类型:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
6
默认字段类型覆盖可以与单独的字段一起提供,而不需要它们自己的字段类型规范:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
7
基于RIID检索配置文件扩展表的成员
如果在配置文件扩展表中,则返回完整记录。
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
8
还接受一个可选参数fields
如果未指定,则默认为all
。示例:
{
"pod": "5",
"api_version": "1.3",
"api_folder": "___api-generated",
"api_list": "___api-list",
"profile_extension_table_alias": "_pet",
"supplemental_table_alias": "_supp",
"primary_key_alias": "_primary_key",
"riid_generator_length": 11,
"caste_nonstr_to_str": false,
"local_content_library_folder": "",
"remote_content_library_folder": "___api-generated-cl",
"test_campaign_name": "test_api_classic",
"test_local_content_library_folder": "responsysrest/tests/documents/",
"test_remote_content_library_folder": "___api-generated-test"
}
9
或
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
0
基于查询属性检索配置文件扩展表的成员
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
1
接受五个参数,但需要list_name
,pet_name
和record_id
。列表名称是要在responsys交互实例中查找记录的名称。记录id是要用来标识记录的特定id。query属性是用于检索记录的id类型。可用选项包括:RIID的r
,电子邮件地址的e
,客户ID的c
,移动电话号码的m
。返回python列表数据对象的字段列表中的字段,如果留空则返回所有字段。
示例:
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
2
基于RIID删除配置文件扩展表的成员
根据RIID删除配置文件扩展表的成员(如果存在)。
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
3
管理补充表
创建新的补充表
创建新的补充表。只需要一个表名,但这将使用默认的文件夹位置和名称创建一个空白的补充表。
示例:
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
4
这将在您的客户机配置中命名的文件夹(默认为\uuu api-generated
)中创建一个不带记录和非默认字段的联系人列表supp
补充表。必须指定一个至少包含一个字段的列表,或者指定一个主键作为responsys内部字段名之一。如果不指定主键,包装器将使用输入列表中的第一个字段,因为api需要主键字段。您还可以指定可选的数据提取密钥。
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
5
或
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
6
包装器使用默认字段类型写入所有字段,除非指定了其他类型,否则默认字段类型为str500
。如果指定了默认类型,它将对所有字段使用该类型。
示例:
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
7
管理活动
获取所有EMD活动
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
8
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
返回活动及其数据、链接及其数据的字典:
{
"user_name": "team_member",
"password": "1!Aa",
"email_address": "team_member@company.com"
}
9
查看公正活动列表:
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
0
或活动及其各自文件夹的列表: campaims=client.get_campaims()['campaims'] [(campaign['name',campaign['foldername'])用于活动中的活动]
获取所有推送活动
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
1
<P>返回推送活动及其相关数据的列表。管理内容
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
您会注意到我们使用的文件是.htm
。responsy在上载时将.html
更改为.htm
静默,并将.htm
附加到ui中创建的.html
文件。建议只使用.htm
创建所有文件以符合要求,否则,如果要将文件拉出,可能会导致本地副本中出现重复项。实际上,包装器不允许.html
文件(尽管您必须自己重命名它们)。
创建文件夹
在内容库中创建文件夹(/contentlibary/
)。
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
2
在内容库中创建文件夹/contentlibarary/new_folder
。
如果不指定文件夹,包装器将默认为为客户端配置的api文件夹名。样板文件的默认值是\uuu api-generated
删除文件夹
删除内容库中存在的文件夹(/contentlibary/
)。
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
3
这也会递归地删除文件夹中的所有文件。
创建内容库文档
在内容库中创建文档(/contentlibary/
)。如果未指定路径,它将使用您的配置本地和远程路径:
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
4
您还可以指定本地和/或远程ContentLibrary子文件夹:
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
5
这将创建(如果您在pod 5上):
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
6
获取内容库文档
获取内容库文档的文档路径、内容和rest crud链接。如果未指定路径,它将使用您的配置本地和远程路径:
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
7
您还可以指定本地和/或远程ContentLibrary子文件夹:
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
5
返回:
import responsysrest as r
client = r.Client(r.configuration.auto(), r.credentials.auto())
9
更新内容库文档
更新/contentlibrary/
中的文档(如果它已经存在)。如果没有指定路径,它将使用您的配置本地和远程路径。
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
0
返回:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
1
您还可以指定本地和/或远程ContentLibrary子文件夹:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
2
此方法的responseys响应明显省略了内容,必须调用get_document()
方法才能获取内容。
删除内容库文档
尝试从/contentlibrary/
中删除文档。只采用包含文档文件名的完整路径。路径是interact中文档的路径,而不是本地文件路径:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
3
与固执己见的create、get和update方法不同,您可以尝试从内容库中删除任何内容,甚至在(内容库)根目录下也是如此。如果您已成功将文件加载到内容库中,则应该可以将其删除。
发送消息
可以通过api和可用的方法发送多种类型的带有响应的消息。目前我们只实现发送电子邮件。
发送电子邮件
此包装器要求对此函数的每次调用都以单个邮件为目标,但允许将任意数量的收件人和任意数量的可选数据与每个收件人一起传递。它只接受电子邮件地址作为ID类型。
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
4
收件人
可以是字符串或字符串列表。包装器将接受任何响应,但响应将失败/拒绝无效地址。以下参数对于recipients
参数(对于包装器而言)都是有效的,但是第三个示例应该从responsys响应返回一个错误:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
5
只有收件人存在于目标列表中时,才会发送邮件。必须从Responsys UI中的活动仪表板配置目标列表。如果目标市场活动的目标列表中不存在收件人,则将从列表中该项目的responsys api返回失败响应。
您还可以传递要在活动生成中使用的可选数据,无论它是否用于经典或EMD活动。这是用一个收件人的词典完成的:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
6
或多个收件人的词典列表:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
7
收件人列表的长度和可选的数据键/值对必须匹配,否则包装器将返回错误。
请注意,密钥不需要匹配:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
8
但是要小心,如果收件人没有接收到可选数据,而收件人确实接收到可选数据,则需要传递一个空字典:
config = r.configuration.from_json('path/to/config.json')
creds = r.credentials.from_json('path/to/secret.json')
9
有时可以更容易地传入none
或空字符串:
client = r.Client(config, creds)
0
非本地功能
基于任意端点调用,您可能需要对api执行一些困难的操作。包装纸为您提供这片糖果。
获取记录列表
client = r.Client(config, creds)
1
client = r.Client(config, creds)
循环遍历每个列表并检查记录是否在列表中。如果记录在列表中,它会将其添加到返回的对象中。这很慢,但有时您想知道成员的列表。
开发/测试
如果您希望做出贡献,那么最好的做法是正确配置客户端(gettests/test_1user_configs.py
passing),然后从以下位置获取缺少的功能列表:
python3-m py test rest/tests/test_2client.py
目前已实现25/52个功能。
运行所有测试或仅运行客户端测试将尝试向客户端的凭据电子邮件地址发送测试消息。必须在交互用户界面中手动配置测试消息。它可以是任何内容,其名称在config.json
文件中配置:
client = r.Client(config, creds)
2
运行配置和集成测试:
client = r.Client(config, creds)
3
运行配置测试:
client = r.Client(config, creds)
4
仅运行客户端/API集成测试:
client = r.Client(config, creds)
5
仅运行附加功能测试:
client = r.Client(config, creds)
6
致谢
这个库的开发灵感来自于pypi上的soap客户端asresponses
。
Oracle用于重型建筑和维护其API。
法律
此代码既不受Oracle、Responsys或任何相关实体的官方支持,也不受其认可。