资讯动态

武汉微信开发之发送C4C数据变更通知到微信应用程序

标签:   | 作者:admin | VISITORS: | 来源:未知
17
Jan
2018
我们该如何发送C4C数据变更通知到微信应用程序?武汉微信开发从业者应该常常会为这个问题而感到头疼。确实,对于武汉微信开发而言,我们经常会碰到各种难点,这个需要我们去好好钻研,下面就让武汉微信开发公司的小编为大家介绍一下。



在以前的博客当微信用户订阅订阅微信帐号,自动创建一个新的个人客户C4C系统。
所以技术上微信源(发送方)的数据流和C4C系统数据流的目标(接收器),和nodejs服务器充当一个中间件。
在这个博客,让我们尝试相反:假设有一个更改了C4C系统中自动创建账户,相应的Wechat用户会收到一个通知他/她Wechat应用。通过C4C发送通知和Wechat等应用是接收器。

实现细节

1。 由于在本系列的第三个博客,我使用标准的领域的“姓”客户BO存储用户的微信号进行订阅,
后来在C4C,任何用户可以改变这个领域。
 
因此在这个博客中,我创建了一个新的扩展领域常见的客户BO存储节点微信号。
import AP.Common.GDT;
import AP.FO.BusinessPartner.Global;

[Extension] businessobject AP.FO.BusinessPartner.Global:Customer {
		// root node of Customer is not extendable
   		node Common {
		 [Label("Wechat ID")] element WechatID:LANGUAGEINDEPENDENT_EXTENDED_Text;
   	    } 
}
和创建一个新的BeforeSave。 absl复制WechatID FamilyName成扩展字段的值。
import ABSL;
var common = this.Common.GetFirst();
if( common.WechatID.IsInitial()) {
	common.WechatID = common.Person.Name.FamilyName;
}
2。 创建一个新的OData服务揭发这些WechatID ObjectID标志字段,ParentObjectID WechatID。
测试这个OData服务通过网址:
https:// <您的房客> / sap / c4c odata cust / v1 / zindividualcustomer / CustomerCommonCollection ? $过滤器= ParentObjectID % 20 eq % 20% 2700163 e20c9511ee7b8975bd4ab3f60c0 % 27
确保它可以返回正确的值按预期三个字段:

3所示。 一旦C4C改变帐户,应该从C4C发送通知我们nodejs服务器。 这种自动通知机制可以实现通过C4C OData事件通知。 看到另一个我的博客 利用C4C Odata通知监控C4C CRM系统的改变的机会  对细节。

下面的设置意味着无论何时发生变化对客户BO C4C,自动更改通知将被发送到端点:
到目前为止所有开发/配置在C4C就完成了。
4所示。 在nodejs服务器实现中,创建一个新配置对象的字段:
  • 字段名:indivudualCustomerNewurl
  • 字段值:https:// <您的房客> / sap / c4c odata cust / v1 / zindividualcustomer / CustomerCommonCollection ? $过滤器=
因为我C4C系统中配置的端点是:https://wechatjerry.herokuapp.com/c4c
当给定帐户C4C改变,一种HTTP post用以下负载将被发送到这个端点:
{“businessObject”:“客户”,“businessObjectId”:“00163 e20c9511ee7b8975bd4ab3f60c0”、“事件”:“”,“odataServiceEndpoint”:“https:// <您的房客> / sap /比亚迪odata / v1 / zindividualcustomer / CustomerCommonCollection(00163 e20c9511ee7b8975bd4ab3f60c0)" }
所以在nodejs服务器,我已经对这个Post请求。
notifyWechatUser主要实现逻辑模块,它使用的guid改变客户BO实例作为输入参数。
内部的实现notifyWechatUser,包括两个步骤:
function notifyWechatUser(uuid,res){
  console.log("begin to read uuid: " + uuid);
  _getAccount(uuid).then(function(wechatID){
    res.status(200).end();
    sendMessage(wechatID, "Dear user, A kind reminder: your C4C account is changed in the system.");
  });
}
1。 叫_getAccount得到WechatID存储在客户BO的常见节点通过OData的电话。
2。 一旦可用,WechatID调用sendMessage句子硬编码发送到相应的微信用户。

实现_getAccount

function _getAccount(uuid) {
  var AccountBOguid = uuid;
  var detailODataUrl = config.indivudualCustomerNewurl;
  var parentID = 'ParentObjectID eq \'' + AccountBOguid + '\'';
  detailODataUrl = detailODataUrl + encodeURI(parentID);
  var getOptions = {
        url: detailODataUrl,
        method: "GET",
        json:true,
        headers: {
            "content-type": "application/json",
            'Authorization': 'Basic ' + new Buffer(config.credential).toString('base64')
        }
  };
  return new Promise(function(resolve,reject){
      var requestC = request.defaults({jar: true});
      console.log("request with url: " + detailODataUrl);
      requestC(getOptions,function(error,response,body){
              var wechatID = body.d.results[0].WechatID;
              console.log("wechat id: " + wechatID);
              resolve(wechatID);
      }); // end of requestC
     });
}

实现sendMessage

var config = require("../../config.js");
var request = require("request");

function printObject(oData){
	for( var a in oData){
		console.log("key: " + a);
		console.log("value: " + oData[a]);
		if( typeof oData[a] === "object"){
			printObject(oData[a]);
		}
	}
}

function sendWCMeaasge(toUser,sMessage){
	console.log("begin to send message to user: " + toUser + " with message: " + sMessage);
    var options = {
            url:"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" +
            config.accessToken, 
            method: "POST",
            json:true,
            headers: {
            	"content-type": "application/json"},
            body:{
              "touser":toUser,
              "msgtype":"text",
              "text":
              {
                   "content":sMessage
              }
                }
          };
      request(options,function(error,response,data){
      	console.log("error? " + error);
        console.log("response: " + response);
        console.log("data: " + data);
        console.log("response...............................................");
        //printObject(response);
        console.log("data.....................................................");
        console.log("Status message: " + response.statusMessage);
        console.log("Data: " + data.errmsg);
      });
  }

module.exports = sendWCMeaasge;

最后的成就

当我测试微信帐号通过扫描QRCode订阅,创建一个新帐户1000443 C4C系统。
当这个账户系统中更改:
对应的微信用户成功地收到了C4C通知在微信应用程序:

资讯动态
首页 | 解决案例 | 资讯动态 | 客户服务 | 关于我们
分享按钮