using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Senparc.NeuChar;
using Senparc.NeuChar.ApiHandlers;
using Senparc.NeuChar.Entities;
using Senparc.Weixin.Exceptions;
using Senparc.Weixin.MP.AdvancedAPIs.GroupMessage;
namespace Senparc.Weixin.MP.AdvancedAPIs
{
public class MpApiEnlightener : ApiEnlightener
{
public static ApiEnlightener Instance = new MpApiEnlightener();
public override NeuChar.PlatformType PlatformType { get; set; } = NeuChar.PlatformType.WeChat_OfficialAccount;
///
/// 发送文本客服消息
///
///
///
///
///
public override ApiResult SendText(string accessTokenOrAppId, string openId, string content)
{
try
{
var result = AdvancedAPIs.CustomApi.SendText(accessTokenOrAppId, openId, content);
return new ApiResult((int)result.errcode, result.errmsg, result);
}
catch (ErrorJsonResultException ex)
{
return new ApiResult(ex.JsonResult.ErrorCodeValue, ex.JsonResult.errmsg, ex.JsonResult);
}
}
///
/// 发送图片客服消息
///
///
///
///
///
public override ApiResult SendImage(string accessTokenOrAppId, string openId, string mediaId)
{
try
{
var result = AdvancedAPIs.CustomApi.SendImage(accessTokenOrAppId, openId, mediaId);
return new ApiResult((int)result.errcode, result.errmsg, result);
}
catch (ErrorJsonResultException ex)
{
return new ApiResult(ex.JsonResult.ErrorCodeValue, ex.JsonResult.errmsg, ex.JsonResult);
}
}
public override ApiResult SendNews(string accessTokenOrAppId, string openId, List articleList)
{
try
{
var news = articleList.Select(z => new NewsModel()
{
title = z.Title,
content = "点击【阅读原文】访问",//内容暂时无法获取到
digest = z.Description,
content_source_url = z.Url,
thumb_url = z.PicUrl
}).ToArray();
//上传临时素材
var newsResult = AdvancedAPIs.MediaApi.UploadTemporaryNews(accessTokenOrAppId, news: news);
var result = AdvancedAPIs.CustomApi.SendMpNews(accessTokenOrAppId, openId, newsResult.media_id);
return new ApiResult((int)result.errcode, result.errmsg, result);
}
catch (ErrorJsonResultException ex)
{
return new ApiResult(ex.JsonResult.ErrorCodeValue, ex.JsonResult.errmsg, ex.JsonResult);
}
}
}
}