GVKun编程网logo

SAP Marketing Cloud Contact 模型的导入配置和数据合并原理(sap commerce cloud)

7

在这篇文章中,我们将带领您了解SAPMarketingCloudContact模型的导入配置和数据合并原理的全貌,包括sapcommercecloud的相关情况。同时,我们还将为您介绍有关Contac

在这篇文章中,我们将带领您了解SAP Marketing Cloud Contact 模型的导入配置和数据合并原理的全貌,包括sap commerce cloud的相关情况。同时,我们还将为您介绍有关Contact Form 7 添加检查验证表单步骤插件 – Contact Form 7 add confirm、Django/Python“django.core.exceptions.ImproperlyConfigured:无法导入‘contact’检查‘...apps.contact.apps.ContactConfig.name’是否正确”、Marketing Cloud contact 的 API 介绍、RewriteRule (contact.php -> contact) + 404 重定向总是给我一个 404 页面的知识,以帮助您更好地理解这个主题。

本文目录一览:

SAP Marketing Cloud Contact 模型的导入配置和数据合并原理(sap commerce cloud)

SAP Marketing Cloud Contact 模型的导入配置和数据合并原理(sap commerce cloud)

SAP 很多系统的主数据都支持从外部系统导入,SAP Marketing Cloud也是如此,contact 主数据可以来自 Hybris Commerce,CRM,ERP或者Twitter,Facebook等社交媒体。来自不同渠道的contact可能对应的是真实世界里同一个人,那么就存在一个过程,该过程的逻辑是将不同渠道的contact数据进行整合,拼凑出一个包含完整信息的contact主数据存储到Marketing Cloud系统里,这个拼凑的过程称之为合并(merge),拼凑后形成的完整Contact结构称为Golden record。

下面这张示意图里的蓝色圆环称为 Main facet,代表每个contact数据在某个源系统上的ID,比如在ERP系统上的ID为123,在Twitter上的ID为456等等。而黄色圆环是contact在各自源系统里的属性,比如在Twitter网站上ID为456的一个contact,其name属性为jerrywang@sap。黄色圆环称之为additional facet.

通过在SAP Marketing Cloud里进行一系列配置,告诉系统,当检测到来自不同数据源的contact数据,存在至少一个相同属性的情况下,应该执行何种contact操作,也就是合并或者新建。

比如下图在ERP,Facebook和Web Shop上有三条contact数据,其Email地址的值都相同,那么进行数据导入时,基于预定义好的配置,Marketing Cloud认为这三条数据指向的是同一个人,所以最后merge出来生成唯一一条 contact记录。

Marketing Cloud具体merge的过程,就是根据SAP Marketing Cloud系统里的customizing配置,将三条Email地址都相同的记录作为当前merge的输入,然后逐一将本记录内的属性“投影”到最终的Golden Record里。如果把Golden Record想象成最终完整的拼图,那么这个merge过程就有些类似于拼图操作——将散布在各个数据源中的零散信息合并成一个整体,存储在Marketing Cloud系统内以便进行后续处理。

Marketing Cloud里针对contact导入系统时的merge操作的相关customizing设置,在整个contact导入过程中起着至关重要的作用。

和SAP Cloud for Customer等很多云产品一样,SAP Marketing Cloud的customizing也是在浏览器里完成。

点击Fiori Launchpad里的Manage Your Solution这个tile,

进入Configure Your Solution,

根据关键字contact进行搜索,在搜索结果列表里找到Contacts and Profiles相关的配置:

其中第六步, OriginContactID-Configure这一步,就是合并时针对来自不同平台的contact数据,执行合并或新建操作的配置。

点击之后,能看到一个contact属性列表,从这些属性列表不难推断出SAP Marketing Cloud支持导入contact的数据源有S/4HANA,ERP,CRM,Hybris Commerce,SAP Cloud for Customer,Gigya,Qualtrics和社交媒体如Twitter,Facebook等等。


上图有两列,分别对应为每个属性指定One Per Contact和Shareable为true还是false的界面。前者顾名思义,如果设置为true,意味着一个contact在同一个数据源系统里只能拥有一个唯一值,比如一个人的护照号码,或者SAP系统里的Customer ID;反之像Email,座机号,传真号这种属性,一个contact在同一个数据源系统里如果允许存在多个值,则One Per Contact设置为false。而Shareable属性置为true,适合那些在同一个数据源系统里允许多个不同contact具有相同值的属性,比如一家人的contacts的座机号允许相同。

对每一个Contact属性,One Per Contact和Shareable的true/false状态排列组合共有四种,其中One Per Contact为true的两种情况,即使系统在检测到匹配的属性情况下,也可能会导致contact数据的创建,而不是merge,也就是下图中第二行和第四行标注了感叹号的情况。

看一些具体的例子:

(1) 手机号码属性的Sharable为false,One Per Contact为false。

来自SAP ERP和Web Shop的这两条数据,mobile字段都相同,Marketing Cloud进行合并,合并之后的contact数据具有分别来自ERP和Web Shop的两个facet。

(2) 手机号码属性的Sharable为false,One Per Contact为true。

在同一个Web Shop系统里存在两条contact记录,虽然其手机号码维护的值都相同,但是因为One Per Contact设置为true,因此Marketing Cloud不进行merge,而是新建了两条Contact记录,其mobile facet的值都为该相同的手机号,而Web Shop ID facet的值分别来自Web Shop系统的原始值。

(3) Email属性的Sharable为true,One Per Contact为false。

来自SAP ERP和SAP CRM的两条数据,Email地址都相同,One Per Contact也维护的是false,但是因为它们的full name不一致,所以最后导入到Marketing Cloud里还是会分别生成两条Contact数据。

导入到Marketing Cloud中的Contact数据,仍然可以通过其标签页Origin Data查看每个属性的来源。

我们使用nodejs对contact进行修改时,需要指定待修改contact实例的guid。

这个guid属于technical属性,在Marketing Cloud UI上默认情况下不可见。如何找到这个属性值呢?

其实就在浏览器地址栏的url里:

当然在Chrome开发者工具的network标签页里也能找到这个guid:

总结

本文首先介绍了 SAP Marketing Cloud Contact(联系人)模型的概要设计,接着从实际例子出发,介绍了来自不同数据源的联系人数据导入云系统时,不同维度的属性是如何进行合并(merge), 从而生成最终的单一记录。

Contact Form 7 添加检查验证表单步骤插件 – Contact Form 7 add confirm

Contact Form 7 添加检查验证表单步骤插件 – Contact Form 7 add confirm

站长朋友们在使用以后,为了访客能够轻松联系到自己,提高网站的转化率,通常会在网站中加入联系我们的表单,让客户可以方便的在线发邮件给自己预设的邮箱。我们都熟悉,这种表单使用 来做非常方便,但是Contact Form 7插件默认的工作流程是:客户填写咨询信息,点击发送,直接发到站长的邮箱,并没有检查确认的步骤。今天我们就来介绍一款插件 – Contact Form 7 add confirm,这款wordpress插件可以给 Contact Form 7 添加检查验证表单的步骤。

插件安装方法:

1. 在后台的插件里搜索 Contact Form 7 add confirm,在线安装或者,上传到服务器空间。
2. 激活插件。

插件使用方法:
通常提交按钮的代码是:

Django/Python“django.core.exceptions.ImproperlyConfigured:无法导入‘contact’检查‘...apps.contact.apps.ContactConfig.name’是否正确”

Django/Python“django.core.exceptions.ImproperlyConfigured:无法导入‘contact’检查‘...apps.contact.apps.ContactConfig.name’是否正确”

如何解决Django/Python“django.core.exceptions.ImproperlyConfigured:无法导入‘contact’检查‘...apps.contact.apps.ContactConfig.name’是否正确”

希望大家能帮我解决这个问题...

我的工作流程:

  1. |.vscode:
  2. |capstone_project_website:
  3. | -_pycache_:
  4. | -apps:
  5. | -_pycache_
  6. | -accounts:
  7. | -contact: # app that is throwing errors
  8. | -_pycache_:
  9. | -migrations:
  10. | -_init_.py
  11. | -admin.py
  12. | -apps.py
  13. | -forms.py
  14. | -models.py
  15. | -test.py
  16. | -urls.py
  17. | -views.py
  18. | -public:
  19. | -_init_.py
  20. | -templates: # all my .html
  21. | -_init_.py
  22. | -asgi.py
  23. | -settings.py
  24. | -urls.py
  25. | -views.py
  26. | -wsgi.py
  27. |requirements:
  28. |scripts:
  29. |static:
  30. |.gitignore
  31. |.python-version
  32. |db-sqlite3
  33. |docker-compose.yml
  34. |Dockerfile
  35. |Makefile #command I am running
  36. |manage.py
  37. |setup.cfg

我在 capstone_project_website/settings.py 中安装的应用程序:

  1. INSTALLED_APPS = [
  2. "django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.contrib.sessions","django.contrib.messages","django.contrib.staticfiles","capstone_project_website.apps.accounts","capstone_project_website.apps.contact",]

我的capstone_project_website/apps/contact/apps.py

  1. from django.apps import AppConfig
  2. class ContactConfig(AppConfig):
  3. name = "contact"

我正在运行的命令在我的 Makefile 中:

  1. compose-start:
  2. docker-compose up --remove-orphans $(options)

当我运行 make compose-start 时,我从我的终端收到此消息:

  1. make compose-start
  2. docker-compose up --remove-orphans
  3. Docker Compose is Now in the Docker CLI,try `docker compose up`
  4. Starting django-website_postgres_1 ... done
  5. Starting django-website_db_migrate_1 ... done
  6. Starting django-website_website_1 ... done
  7. Attaching to django-website_postgres_1,django-website_db_migrate_1,django-website_website_1
  8. db_migrate_1 | Traceback (most recent call last):
  9. db_migrate_1 | File "/usr/local/lib/python3.7/site-packages/django/apps/config.py",line 244,in create
  10. db_migrate_1 | app_module = import_module(app_name)
  11. db_migrate_1 | File "/usr/local/lib/python3.7/importlib/__init__.py",line 127,in import_module
  12. db_migrate_1 | return _bootstrap._gcd_import(name[level:],package,level)
  13. db_migrate_1 | File "<frozen importlib._bootstrap>",line 1006,in _gcd_import
  14. db_migrate_1 | File "<frozen importlib._bootstrap>",line 983,in _find_and_load
  15. db_migrate_1 | File "<frozen importlib._bootstrap>",line 965,in _find_and_load_unlocked
  16. db_migrate_1 | ModuleNotFoundError: No module named ''contact''
  17. db_migrate_1 |
  18. db_migrate_1 | During handling of the above exception,another exception occurred:
  19. db_migrate_1 |
  20. db_migrate_1 | Traceback (most recent call last):
  21. db_migrate_1 | File "manage.py",line 22,in <module>
  22. db_migrate_1 | main()
  23. db_migrate_1 | File "manage.py",line 18,in main
  24. db_migrate_1 | execute_from_command_line(sys.argv)
  25. db_migrate_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py",line 419,in execute_from_command_line
  26. db_migrate_1 | utility.execute()
  27. db_migrate_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py",line 395,in execute
  28. db_migrate_1 | django.setup()
  29. db_migrate_1 | File "/usr/local/lib/python3.7/site-packages/django/__init__.py",line 24,in setup
  30. db_migrate_1 | apps.populate(settings.INSTALLED_APPS)
  31. db_migrate_1 | File "/usr/local/lib/python3.7/site-packages/django/apps/registry.py",line 91,in populate
  32. db_migrate_1 | app_config = AppConfig.create(entry)
  33. db_migrate_1 | File "/usr/local/lib/python3.7/site-packages/django/apps/config.py",line 250,in create
  34. db_migrate_1 | app_config_class.__qualname__,db_migrate_1 | django.core.exceptions.ImproperlyConfigured: Cannot import ''contact''. Check that ''capstone_project_website.apps.contact.apps.ContactConfig.name'' is correct.
  35. postgres_1 |
  36. postgres_1 | Postgresql Database directory appears to contain a database; Skipping initialization
  37. postgres_1 |
  38. postgres_1 | 2021-05-02 14:17:44.105 UTC [1] LOG: starting Postgresql 13.2 (Debian 13.2-1.pgdg100+1) on x86_64-pc-linux-gnu,compiled by gcc (Debian 8.3.0-6) 8.3.0,64-bit
  39. postgres_1 | 2021-05-02 14:17:44.106 UTC [1] LOG: listening on IPv4 address "0.0.0.0",port 5432
  40. postgres_1 | 2021-05-02 14:17:44.106 UTC [1] LOG: listening on IPv6 address "::",port 5432
  41. postgres_1 | 2021-05-02 14:17:44.113 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGsql.5432"
  42. postgres_1 | 2021-05-02 14:17:44.121 UTC [28] LOG: database system was shut down at 2021-05-02 14:17:17 UTC
  43. django-website_db_migrate_1 exited with code 1
  44. postgres_1 | 2021-05-02 14:17:44.129 UTC [1] LOG: database system is ready to accept connections
  45. website_1 | Watching for file changes with StatReloader
  46. ^CGracefully stopping... (press Ctrl+C again to force)
  47. Stopping django-website_website_1 ... done
  48. Stopping django-website_postgres_1 ... done

我知道我投入了很多工作流程,但我想知道我是否设置错误。我之前在我的帐户应用程序上尝试 makemigrations 时遇到过这个问题。那个答案似乎奏效了。 答案是将 name 中的 capstone_project_website/apps/accounts/apps.py 更改为

  1. class AccountsConfig(AppConfig):
  2. name = "capstone_project_website.apps.accounts"

在已安装的应用程序中,您可以看到路径是:

  1. "capstone_project_website.apps.accounts",

我已尝试更改...的名称capstone_project_website/apps/contact/apps.py

  1. class ContactConfig(AppConfig):
  2. name = "contact"

...到name=''capstone_project_website.apps.contact'' ...和我安装的应用名称:

  1. INSTALLED_APPS = [
  2. ...
  3. "capstone_project_website.apps.ContactConfig",]

重点是我不确定发生了什么,是目录问题、名称问题还是在make compose-start之前遗漏了某些步骤。如果您能帮我解决这个问题,并解释我做错了什么,我将不胜感激! 谢谢

解决方法

检查您的 Django 版本。如果您将 django 版本更新到 3.2,请尝试切换到最早的版本。

django==3.1.8

,

尝试改变这个:

类 ContactConfig(AppConfig): 姓名 = "联系人"

为此:

类 ContactConfig(AppConfig): name = "apps.contact"

Marketing Cloud contact 的 API 介绍

Marketing Cloud contact 的 API 介绍

下图的 contact 列表是 Marketing Cloud 调用后台 odata 服务后显示的:
clipboard1

URL:https://jerry.gcdemo.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/$batch?sap-client=100

clipboard2

http 请求的正文:
–batch_c914-a60c-1877
Content-Type: application/http
Content-Transfer-Encoding: binary

GET InteractionContacts?sap-client=100&KaTeX parse error: Expected ''EOF'', got ''&'' at position 7: skip=0&̲top=45& s e l e c t = I m a g e U R L select=ImageURL%2cName%2cContactLevelName%2cCountryName%2cCity%2cEMailAddress%2cPhoneNumber%2cMobilePhoneNumber%2cCorporateAccountName%2cInteractionContactUUID%2cRelationship%2cType&amp; select=ImageURLinlinecount=allpages HTTP/1.1
sap-cancel-on-close: true
Cache-Control: max-age=360
sap-contextid-accept: header
Accept: application/json
Accept-Language: en
DataServiceVersion: 2.0
MaxDataServiceVersion: 2.0

–batch_c914-a60c-1877–

http 响应:

{“d”:{"__count":“1218374”,“results”:[{"__metadata":{“id”:“https://diablo.gcdemo.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts(‘00163E1B0A701EE6939977B1F8726D4C’)",“uri”:“https://diablo.gcdemo.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts(‘00163E1B0A701EE6939977B1F8726D4C’)”,“type”:“CUAN_CONTACT_SRV.InteractionContact”},“InteractionContactUUID”:“00163E1B0A701EE6939977B1F8726D4C”,“City”:“Newman”,“ContactLevelName”:“Self-Identified”,“CorporateAccountName”:"",“CountryName”:“USA”,“EMailAddress”:“0200205812_agatha.steward-90@outlook.com”,“ImageURL”:"",“MobilePhoneNumber”:"",“Name”:"Agatha Steward”,“PhoneNumber”:"",“Relationship”:1,“Type”:“01”},{"__metadata":{“id”:“https://diablo.gcdemo.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts(‘00163E1B0A701ED6939FBB838E1E803A’)",“uri”:“https://diablo.gcdemo.hybris.com/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts(‘00163E1B0A701ED6939FBB838E1E803A’)”,“type”:“CUAN_CONTACT_SRV.InteractionContact”},“InteractionContactUUID”:“00163E1B0A701ED6939FBB838E1E803A”,“City”:"",“ContactLevelName”:“Self-Identified”,“CorporateAccountName”:"",“CountryName”:“USA”,“EMailAddress”:“antonioifernandez@einrot.com”,“ImageURL”:"",“MobilePhoneNumber”:"",“Name”:"Antonio Fernandez”,“PhoneNumber”:"",“Relationship”:0,“Type”:“01”},{"__metadata":

本文同步分享在 博客 “汪子熙”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。

RewriteRule (contact.php -> contact) + 404 重定向总是给我一个 404 页面

RewriteRule (contact.php -> contact) + 404 重定向总是给我一个 404 页面

如何解决RewriteRule (contact.php -> contact) + 404 重定向总是给我一个 404 页面

最近我修改了我的 apache 服务器中的 .htaccess 文件。这是以下代码

  1. RewriteEngine On
  2. <IfModule mod_speling.c>
  3. CheckSpelling On
  4. </IfModule>
  5. RewriteCond %{SCRIPT_FILENAME} !-d
  6. RewriteCond %{SCRIPT_FILENAME} !-f
  7. RewriteRule ^course/([^/.]+)$ course.PHP?name=$1 [QSA,L]
  8. RewriteRule ^course/([^/.]+)/$ course.PHP?name=$1 [QSA,L]
  9. RewriteRule ^about$ about.PHP [QSA,L]
  10. RewriteRule ^about/$ about.PHP [QSA,L]
  11. RewriteRule ^contact$ contact.PHP [QSA,L]
  12. RewriteRule ^contact/$ contact.PHP [QSA,L]
  13. RewriteRule ^downloads$ downloads.PHP [QSA,L]
  14. RewriteRule ^downloads/$ downloads.PHP [QSA,L]
  15. RewriteRule ^ errors/404.html [L,NC]

现在的问题是 如果我在网络浏览器中输入类似 http://localhost/about 的 URL,它总是会显示自定义的 404.html

我认为问题出在最后一行。

如果我删除最后一行,它将起作用。 但我也想要 404 页面。 Like 如果用户输入 http://localhost/SomeRandomString,404 页面将显示在此网址上。

我也在 .htaccess 文件上尝试了 ErrorDocument 但它会改变 url

有没有办法解决这个问题。

解决方法

以下列方式拥有您的 htaccess 规则文件。将它放在您的根目录中,确保在检查您的 URL 之前清除浏览器缓存。

  1. RewriteEngine On
  2. <IfModule mod_speling.c>
  3. CheckSpelling On
  4. </IfModule>
  5. ##Rules that cover your uris starting with course here.
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7. RewriteCond %{REQUEST_FILENAME} !-f
  8. RewriteRule ^(course)/([^/.]+)/?$ $1.php?name=$2 [NC,QSA,L]
  9. ##Rules that cover your uris starting with about/contact/downloads here.
  10. RewriteCond %{REQUEST_FILENAME} !-d
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. RewriteRule ^(about|contact|downloads)/?$ $1.php [NC,L]
  13. ##Rules that cover all uris which aren''t matching any of the above conditions.
  14. RewriteCond %{REQUEST_FILENAME} !-d
  15. RewriteCond %{REQUEST_FILENAME} !-f
  16. RewriteRule ^ errors/404.html [L,NC,QSA]

关于SAP Marketing Cloud Contact 模型的导入配置和数据合并原理sap commerce cloud的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Contact Form 7 添加检查验证表单步骤插件 – Contact Form 7 add confirm、Django/Python“django.core.exceptions.ImproperlyConfigured:无法导入‘contact’检查‘...apps.contact.apps.ContactConfig.name’是否正确”、Marketing Cloud contact 的 API 介绍、RewriteRule (contact.php -> contact) + 404 重定向总是给我一个 404 页面等相关知识的信息别忘了在本站进行查找喔。

本文标签:

上一篇解析AD654: Marketing Analytics(解析几何)

下一篇SAP Marketing Cloud Restful API SDK 使用案例分享(sap consumer industry cloud)