曾经有朋友在知乎上向我提问,咨询在SAP成都研究院工作的体验。
当时,我的回答提到一点,SAP注重工作与生活的平衡,这也是SAP中国官网强调的一点。
https://www.sap.com/china/about/careers/who-we-are/life.html
具体到SAP成都研究院,这里的同事们业余时间的兴趣爱好广泛,既有传统的足球,篮球,羽毛球,游泳这些,也有门槛相关较高的铁人三项运动,详情可以参考SAP成都研究院铁人三项大神邓阳的文章: SAP成都研究院的体育故事。
当然,这些每天从事创造性工作的程序员当中也不乏身怀绝技之人,比如能够双手同时使棍的许聚龙:SAP成都研究院许聚龙: Hello, Coresystems;有痴迷于各种飞机的哈公子: SAP成都研究院飞机哥: 程序猿和飞机的不解之缘;有海归青年,深受法国浪漫主义熏陶,喜欢游泳摄影网球滑雪的陈扬洋;最近SAP成都研究院几期Toast Master活动,每期都有层出不穷的才艺带给大家的前端开发程序媛Feng Grace,喜欢烹饪美食,会弹奏夏威夷小吉他(乌克丽丽),爱好摄影。下面两张图是Grace的作品:
当然谈到我们成都同事各式各样的兴趣爱好,一定少不了李晓刚:读佛经,写诗(打油诗),玩飞镖,最近又迷上了囤积生土豆。
今天文章的作者,我的同事廖婧,是一位拥有十多年工作经验的SAP从业人员,专业技能的精通自然不用多说。生活中的廖婧,如果要让Jerry用一句话评价,那就是: 贤妻良母。
当然组里同事李晓刚对她的评价,Jerry也完全同意。
她的兴趣爱好或许不如前面几位同事那么吸引眼球,但是特别有意义——廖婧是成都小红马儿童会创始元老会员之一。小红马儿童会2011年1月创建于成都,是向弱势儿童和贫困乡村儿童提供服务的非营利性儿童关爱公益组织。关注对象为弱势儿童和乡村儿童,弱势儿童包括残疾儿童、孤弃儿童、少数民族儿童及留守儿童等。目前小红马的主要活动地在成都市周边贫困乡村。
更多关于小红马儿童会的信息,还是让廖婧给大家介绍吧。
下面是她的正文。
大家好,我是廖婧(Janet Liao), 本职工作是一名SAP从业人员,业余时间喜欢做手工,包括除针线活以外的一切手工,像沙画、软陶、魔术气球、乐高等等,堪称小朋友杀手_。 而这些“特殊”技能的习得,全靠这几年志愿者经历的锻炼。10年辞职旅行去了雨崩徒步,完了转头去双廊看新开了客栈的朋友,狗哥是当地“蓝脚印”的组织者,免费为志愿者提供住宿,很有幸的我成为了入住的第一批蓝脚印,往返两小时的山路,陪小朋友们弹琴唱歌画画踢球,充实快乐。
公益本应是普通生活的一部分,而不应带有任何的道德优越感,我们不是在施,而是在这些经历中得到了成长和喜悦,感谢这段旅行带给我的开悟。
回到成都之后,非常幸运地认识了一帮可爱的马儿们,成为“小红马儿童会”的“元老”成员,于是从11年开始了每月一次的乡村行,我们的愿望很简单,希望能陪伴父母不在身边的孩子们一个有色彩的童年,并对确实有需要的困难家庭进行家访并寻求助养人。感谢之前IBM的同事小强,不仅资助一个我家访过的孩子至今,还认真地为她考量合适的专业创造实习机会,真正使她们可能改变命运。抛开这些物质上的帮助,其实活动宗旨是陪伴的同时让孩子更多地了解自己的乡村,去发现、挖掘家乡文化,保持与家乡的情感链接,从而建立自己的文化自信。于是,我们有了各种文化小课,做标本、画石头、家乡的声音、家乡的色彩、家乡的味道,夏令营、冬令营,再到了后面的经典诵读。在这个过程当中,我们自己的收获比村里的孩子们要多得多,除了一群志同道合的朋友、发现美的能力,还有那么真诚热烈的被需要的感觉。当妈妈之后,活动参加得不多了,但是新生代马儿们还在继续,欢迎同样热爱乡村热爱生活热爱经典国学的朋友加入。
对这项公益活动感兴趣的朋友,可以查阅这篇小红马儿童会发布的****文章。
下面咱们进入正题。自06年与SAP结缘开始,先后在甲方和Partner公司工作了很长一段时间,去年7月加入SAP成都研究院,成为SAP Cloud for Customer(C4C)开发团队的一员。与一直专注做标准产品开发的同事们不一样,由于身份的变化,这些年我在不同的SAP项目上的工作内容也有挺大的不同。
我特别喜欢用房子来给完全不了解SAP的朋友们解释我是做什么工作的。当一家公司要上一款信息化产品前,通常会先选型,就跟我们去买房一样,会根据自身的需求先圈定一些目标,比如选择心仪的品牌开发商,追求容积率低,绿化好的楼盘,或者是根据自己的预算去选择,客户也一样。SAP作为行业内知名龙头厂商,和其它竞争对手一起竞标,调研客户需求并推荐适合的商务套件。一旦客户选型完毕,就要进入到项目实施阶段了,相当于精装房交付但入住前需要有设计师进行硬装软装设计,再由施工团队完成装修工作,各大咨询公司的实施团队就在这个阶段粉墨登场,顾问会详细地调研需求绘制蓝图,等同于设计定稿,项目实施上线交付就是业主可以拎包入住的时候了。
从业主到装修公司到开发商一路走来,有趣的故事不少,以后有机会再跟大家唠唠。今天跟大家分享的内容是C4C中社交媒体集成(Social Media Integration)的部分。
在一个能自助服务就不选择人工介入的时代,社交媒体在现代人的生活中扮演了越来越重要的角色,大家不妨回忆一下自己每天刷微博微信的频率。目前 C4C系统已经实现了与Facebook/Twitter/Instagram/YouTube/WeChat等多种渠道和C4C Ticket服务场景的集成,另外还支持Custom Channel(客户自定义渠道)用于上述标准渠道之外的其它类型。
我们以Twitter为例,来探索一下社交媒体与C4C Ticket的集成。假设有这样一个业务场景:苹果公司在Twitter网站上有一个官方账号叫做Smart Apple,有一天客户Sherry的iPhone发生故障了,在Twitter上首次@Smart Apple发布了一条消息: "我的iPhone X坏了"。这条消息会自动被C4C抓取,首先为Sherry创建一条Business Partner主数据,再创建一个相应的Ticket。客服人员被分派这个Ticket之后,在C4C系统回复: "请提供您手机的序列号及具体的故障说明",Sherry立即在Twitter上收到这条回复,并可以通过继续回复或者直接私信的方式进行后续交流。
下图是Twitter网站上Sherry的抱怨被成功抓取到C4C系统后生成对应的Ticket截图:
C4C客户人员可以在Ticket明细页面直接回复客户,
这条来自C4C系统的Ticket回复文本会出现在Twitter网站上,投诉问题的客户能直接在Twitter上收到问题处理的结果。
其实我的同事Jerry所在的SAP成都研究院CRM开发团队,早在2013年时就在SAP CRM On-Premises呼叫中心里实现了类似的功能,详情可以查看Jerry的文章:OAuth 2.0协议在SAP产品中的应用。
对于苹果公司而言,实现这样一个场景只需要在C4C系统中进行两步简单配置:一是为官方Twitter账号创建一个Social Media Channel; 二是创建一个Social Media Message extraction run, 其实就是SAP顾问朋友们熟悉的ABAP后台作业,关联第一步创建好的Channel,并指定执行的时间和频率, 用来定期从Twitter网站抓取数据。除此之外不需要任何额外的开发工作。
详细的配置:
Administrator -> Service and Social Settings,找到Social Media, 新建一个Social Media Channel,每一个Twitter账号对应一个Channel。
Consumer key和Consumer Secret是这个channel与Twitter应用进行交互的必要信息,在Twitter Developers页面可以查看:
点击“Connect with Channel',Twitter登录界面将在一个新的窗口打开,使用Twitter账号进行权限验证,当看到成功提示之后,可以关闭该窗口回到C4C的页面。
关于OAuth2.0协议在Twitter账号和C4C渠道绑定中起到的作用,请参考Jerry的文章:
通过Administrator -> Service and Social Settings,找到Social Media, 新建一个Social Media Message Import Run,指定服务的Channel,并配置运行频率。大家可以把这个界面当成浏览器版本的SM37。
上述配置在系统中是怎么协同工作的呢?在介绍技术实现之前,我们需要先了解几个关键的Business Object。C4C Social Media有三剑客,SMAP、SMUP、SMA,三者相互调用,完成了Ticket与社交媒体的各种交互。以下BO结构仅为关键信息的示意,帮助大家了解BO之间是如何关联的。
SMAP,全称Social Media Activity Provider,对应的就是Social Media Channel。刚刚提到的Twitter官方账号和Channel的关联,以及关联配置时输入的设置信息都存储在下图所示的ACCESS INFO子节点中。
SMUP,全称Social Media User Profile, 每一个Twitter的个人账号对应一个SMUP BO实例。图示的BUPA子节点关联到一个BP 信息(例子中是Individual Customer),USER INFO子节点中存储的是其对应的社交媒体信息,对于Twitter和Facebook账号来说,只需要指定Channel Type和Communication ID即可,同一个BP的Twitter对应的SMUP只会有一个。微信稍有不同,后面再做解释。
SMA,全称Social Media Activity,也叫Social Media Message(消息),每一次对话对应一条该BO的实例,包含了消息来源用户的SMUP信息、消息来源的Channel信息(SMAP)、消息内容(Interaction Content)等,根据一定的逻辑判断是否创建Ticket。以客服人员回复Ticket生成的SMA为例,Main Activity负责存储生成Ticket的消息,Parent Activity为客服回复所针对的消息,如果用户再次回复了客服,那么此条回复消息即为Child Activity。这样保证了一系列的会话和回复可以有序地串起来。
另外还有一个对象,是仅用于Inbound Message的,即我们前面说的第二步配置,在C4C里有个术语叫MDRO(Mass Data Run Object), 即C4C后台作业的技术实现。
消息交互分为两种场景。
一种是Inbound,即消息流从社交媒体导入C4C, 包括用户首次报Ticket, 用户对官方账号的回复, 用户私信官方账号等等。
每一个激活并设置了运行周期的Import Run都对应着一个ABAP后台作业,根据配置在其中的Channel ID对应的Twitter官方账号,调用Twitter API去抓取新生成的消息。得到消息列表之后,先查看该消息来源的Twitter账号是否在系统中有匹配的SMUP信息,如果有,取得该信息用于Activity的创建; 若没有,判断User Category为standard则创建一条Individual Customer并基于此创建一条SMUP,再进行Activity的创建。
创建Activity的同时,SMA的determination实现会根据消息的类型判断是否创建新的Ticket。若需要,则调用BADI进行创建。Ticket和Social Media 的关系是由Business Transaction Document Reference 关联起来的。
另一种场景是Outbound,即客服人员在C4C回复Ticket,回复内容会被推送到Twitter。
Outbound场景的另一个变式是客服在C4C里转发。
讨论完Twitter,我们再来看看大家更加熟悉的微信。微信与C4C Ticket的集成与Twitter/Facebook相比有着很大的差异。
首先,微信有一个独有的Agent Server(也称消息服务器,中间服务器等等),需要额外的开发来完成与C4C的集成;
比如Jerry这篇文章 打通C/4HANA和S/4HANA的一个原型开发:智能服务创新案例 里展示过一张架构图,红色高亮部分就是Agent Server,作为终端用户手中的微信客户端和C4C系统交互的中间件。
其次信息推送的方式不同,Facebook/Twitter是被动地等待C4C来读取消息,而微信则是主动向C4C推送消息的,因此微信和C4C的集成,不需要定义Import Run这种后台作业。
与Twitter官方账号类似,每个微信公众号对应C4C系统里一个Social Media Provider。在创建SMUP的时候,由于每一个用户对于不同的公众号,OpenID都是不同的,因此还需要额外指定External Party ID,即关联到公众号的Provider,这样C4C在往微信推送消息的时候才能根据BP信息和Channel找到对应的SMUP,从而确定OpenID,把消息推送到正确的公众号去。
这里给大家解释一下微信OpenID的概念,它与微信ID和微信昵称到底有什么区别呢?
-
微信 ID: 相当于微信用户在微信这个APP的身份证号码,唯一且创建之后不可更改。你的朋友可以通过微信ID搜索到你。
-
微信昵称: 微信昵称是微信用户显示在朋友的联系人清单里的名字,可以多次更改。
-
微信 OpenID: 当一个微信用户关注了一个微信公众号之后,公众号可以获取到该用户对应的OpenID,对公众号来说,每个关注了该公众号的用户会通过一个唯一的ID来标识;对微信用户来说,他/她关注了多个不同的公众号,会对应多个不同的OpenID。
以下图为例,用户李晓刚同时关注了苹果的售前和售后公众号,会在SMUP中生成两条User Profile,对应两个不同的OpenID。当他通过售后公众号报了Ticket之后,C4C的客服回复该Ticket时,除了BP号和Channel Type是微信之外,还需要知道该Ticket是通过哪一个公众号在C4C系统生成的,这样才能找到正确的OpenID,从而准确回复给对应的微信用户。因此在生成SMUP时,除了记录OpenID之外,还需要记录公众号的信息, 即Channel ID,也就是C4C系统里配置的Social Media Provider ID,对应到现实里就是一个公众号。而Twitter和Facebook的账号,只需要在创建SMUP时指定Channel Type即可。
最后让我们来看看微信和C4C集成的效果。下图展示的是通过Jerry的另一篇文章 C4C和微信集成系列教程 和我的同事Li Sean在SAP社区上发表的博客里介绍的步骤开发而成的功能:
https://blogs.sap.com/2018/02/28/integration-of-wechat-and-c4c-service-ticket-on-html5-client/
客户在微信客户端提出一个产品故障报告:
通过上面介绍的集成场景,在C4C自动生成了一个Ticket:
C4C的客服人员被分配到这个Ticket后,在C4C里回复,告诉客户该故障已经在处理中了:
客户在自己的微信客户端上收到了C4C客服人员的回复:
以上就是我对C4C社交媒体集成这个话题的一些分享,如果大家有任何疑问或者希望进一步探讨,欢迎联系我们,感谢阅读。
更多阅读
相关推荐
神奇宝贝(PokemonGo)基于Jetpack+MVVM+Repository设计模式+Data
用于试用 Dev Containers 的 Python 示例项目试用开发容器Python开发容器是一个具有明确定义的工具/运行时堆栈及其先决条件的运行容器。您可以使用GitHub Codespaces或Visual Studio Code Dev Containers试用开发容器。这是一个示例项目,您可以通过几个简单的步骤尝试任一选项。我们还有各种其他vscode-remote-try-*示例项目。注意如果您已经有代码空间或开发容器,则可以跳至“要尝试的事情”部分。设置开发容器GitHub Codespaces请按照以下步骤在 Codespace 中打开此示例单击代码下拉菜单。单击Codespaces选项卡。单击主屏幕上的“创建代码空间”。有关创建代码空间的更多信息,请访问GitHub 文档。VS Code 开发容器如果您已安装 VS Code 和 Docker,则可以单击上方或此处的徽章开始使用。单击这些链接将导致 VS Code 根据需要自动安装 Dev Containers 扩展,将源代码克隆到容器卷中,并启动开发容器以供使用。按
springboot vue3前后端分离
数学建模-神经网络算法 lecture 11 线性随机系统辨识示例 共9页.pptx
优质粳稻生产技术规程.docx
算法 - Python 目录灵感与动力贡献指南从这里开始所有算法均用 Python 3 实现(用于教育)这些实现仅用于学习目的。如果您想贡献更有效的解决方案,请随时打开问题并提交您的解决方案。灵感你可以在LeetCode 算法中寻找要实现的算法若要贡献,请确保算法尚未提交!请确保在您的 PR 中添加问题编号。贡献指南文件夹和文件请确保你的文件位于 -Folder 中LeetCode,并且命名如下 0001_TwoSum.py-> LeetCode 问题的 4 位数字、下划线、LeetCodeName开放问题当您打开问题时,请确保问题尚未实现(查看代码/Leetcode 以获取问题编号)。现有问题打开的问题将被关闭,并且对此问题的 PR 被标记为垃圾邮件 。打开问题的贡献者将被优先分配到该问题。如果大约 7 天内没有 PR,则问题将分配给另一个贡献者。拉取请求只有与问题相结合并符合命名约定(参见文件夹和文件)的 Pull 请求才会被合并!如果 PR 中没有加入问题,您的 PR 将被标记为垃圾邮件并关闭。如果您的代码未通
用于接收和交互来自 Slack 的 RTM API 的事件的框架python-rtmbot此项目不再处于积极开发阶段。如果您刚刚开始,我们建议您先查看Python SDK。如果您一直在使用此项目,我们只会解决关键问题(例如安全问题),但我们建议您计划迁移到 Python SDK。您仍然可以提交问题并向我们寻求帮助! 如果您有兴趣在未来维护此软件包,请联系我们 一个用 Python 编写的 Slack 机器人,通过 RTM API 连接。Python-rtmbot 是一个机器人引擎。任何了解Slack API和 Python的人都应该熟悉插件架构。配置文件格式为 YAML。该项目目前处于 1.0 之前的版本。因此,您应该计划不时进行重大更改。对于任何重大更改,我们将在 1.0 之前的版本中调整次要版本。(例如 0.2.4 -> 0.3.0 意味着重大更改)。如果稳定性很重要,您可能希望锁定特定的次要版本)与 webhook 的一些区别不需要网络服务器来接收消息可以回复用户的直接消息以 Slack 用户(或机器人)身份登录机器人用户必须被邀请加入频道
基于django的音乐推荐系统.zip
北京理工大学<Python机器学习应用>超详细学习笔记和代码注释(未完待续)
kernel-5.15-rc7.zip
神经网络-DenseNet网络结构
rbac组件(基于角色的权限控制)
C++ Vigenère 密码(解密代码)
数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 杭州消防设置-对杭州市消防局设置的研究 共8页.pdf
老年用品产品推广目录分类表.docx
本项目是基于Python的期货程序化交易系统的设计与实现,旨在为计算机相关专业学生提供一个实践性强、贴近实际应用场景的项目案例。通过这一项目,学生们能够深入了解程序化交易的基本原理和实现方法,同时锻炼自身的编程技能、数据分析能力以及金融市场的洞察力。 项目的主要功能包括:自动收集和处理市场数据、基于预设策略进行交易决策、实时执行交易指令、监控交易风险以及生成详细的交易报告。系统采用模块化设计,主要包括数据采集模块、策略执行模块、交易执行模块和风险管理模块,各个模块之间通过明确的接口进行交互。项目采用的编程语言为Python,利用其强大的数据处理库和机器学习库,保证了系统的灵活性和扩展性。开发这一项目的目的是让学生们在实践中学习和掌握程序化交易的核心技术,提升其在金融科技领域的就业竞争力。
基于java的校园失物招领平台设计与实现.docx
Javascript Ninja 课程JavaScript Ninja 课程Inscreva-se agora mesmo e ganhe 10% de desconto!Como tirar dúvidas sobre 或 conteúdo do curso访问问题页面Pesquise nas发出abertas e fechadas, se a mesma dúvida já foi postadaSe não foi, crie uma nova issues , coloque um titulo que tenha a ver com a sua dúvida, e descreva-a com o maior nível detalhes possíveis, para que possamos te ajudar:)摘要Veja o sumário completo do curso aqui。赞同!:D
solid.python通过示例在 Python 中解释SOLID 原则。单一职责原则开放/封闭原则里氏替换原则接口隔离原则依赖倒置原则
公交信息在线查询系统 微信小程序+SSM毕业设计 源码+数据库+论文+启动教程 项目启动教程:https://www.bilibili.com/video/BV1BfB2YYEnS