BotRegisterListener.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package com.edufound.reader.botsdk;
  2. import com.baidu.duer.bot.event.payload.LinkClickedEventPayload;
  3. import com.baidu.duer.botsdk.BotIntent;
  4. import com.baidu.duer.botsdk.BotSdk;
  5. import com.baidu.duer.botsdk.IAccountChargeMsgListener;
  6. import com.edufound.reader.bean.ChannelCodeEnum;
  7. import com.edufound.reader.util.Consts;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. public class BotRegisterListener {
  11. private static List<IAccountChargeMsgListener> mIAccountListener = new ArrayList<>();
  12. public static void registerListener(IBotIntentCallback iBotIntentCallback, IAccountChargeMsgListener iAccountChargeMsgListener) {
  13. if (Consts.getUMengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  14. //如果是百度。就注册百度的接口
  15. BotMessageListener.getInstance().addCallback(iBotIntentCallback);
  16. mIAccountListener.add(iAccountChargeMsgListener);
  17. BotSdk.getInstance().setAccountAndChargeListener(mIAccountListener.get(mIAccountListener.size() - 1));
  18. }
  19. }
  20. public static void removeListener(IBotIntentCallback iBotIntentCallback) {
  21. if (Consts.getUMengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  22. //如果是百度。就删除百度
  23. BotMessageListener.getInstance().removeCallback(iBotIntentCallback);
  24. if (mIAccountListener.size() > 0) {
  25. mIAccountListener.remove(mIAccountListener.get(mIAccountListener.size() - 1));
  26. if (mIAccountListener.size() > 0) {
  27. BotSdk.getInstance().setAccountAndChargeListener(mIAccountListener.get(mIAccountListener.size() - 1));
  28. } else {
  29. BotSdk.getInstance().setAccountAndChargeListener(null);
  30. }
  31. }
  32. }
  33. }
  34. public static void BaiDuLogin() {
  35. LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
  36. linkClickedEventPayload.url = mockGrantPhoneNumberUrl();
  37. BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
  38. }
  39. public static void getBaiDuVipInfo() {
  40. LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
  41. linkClickedEventPayload.url = String.format("dueros://%s/getVipInfo" + "?channel_type=bot_child&from=wutong|show|yifang|ldpy", BotConstants.BOTID);
  42. BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
  43. }
  44. /**
  45. * 调用百度VIP收银台
  46. */
  47. public static void payBaiDuVip() {
  48. //dueros://{bot_id}/buyXiaoduVIP?channel_type={channel_type}&from={from},
  49. Consts.setIsNeedLogin(true);
  50. LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
  51. linkClickedEventPayload.url = "dueros://" + BotConstants.BOTID + "/buyXiaoduVIP";
  52. BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
  53. }
  54. /**
  55. * 上报使用了资源
  56. */
  57. public static void uploadUsage(String privilege, String resId, String resType, String usertype) {
  58. LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
  59. linkClickedEventPayload.url = ("dueros://" + BotConstants.BOTID + "/upload?type=usage&isPrivilege=" + privilege + "&resourceId=" + resId + "&resourceType=" + resType + "&userType=" + usertype + "");
  60. BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
  61. /**
  62. * 会员录音上报 BotRegisterListener.uploadUsage("1", mReadId, "record", "vip");
  63. * */
  64. /**
  65. * 免费视频上报 BotRegisterListener.uploadUsage("0", readid, "video", "unpurchased");
  66. * */
  67. }
  68. /**
  69. * 解锁资源
  70. */
  71. public static void uploadUnlock(String resId, String resType, String usertype) {
  72. LinkClickedEventPayload linkClickedEventPayload = new LinkClickedEventPayload();
  73. linkClickedEventPayload.url = ("dueros://" + BotConstants.BOTID + "/upload?type=unlock&isPrivilege=1&resourceId=" + resId + "&resourceType=" + resType + "&userType=" + usertype + "");
  74. BotSdk.getInstance().uploadLinkClickedEvent(linkClickedEventPayload);
  75. }
  76. /**
  77. * 构造手机号一键授权的url
  78. *
  79. * @return
  80. */
  81. public static String mockGrantPhoneNumberUrl() {
  82. String url = "http://%s/path?openbot=true&request={\\\"query\\\":{\\\"type\\\":\\\"TEXT\\\","
  83. + "\\\"original\\\":\\\"手机号授权\\\",\\\"rewritten\\\":\\\"手机号授权\\\"},"
  84. + "\\\"dialogState\\\":\\\"COMPLETED\\\","
  85. + "\\\"intents\\\":[{\\\"name\\\":\\\"AskForPermissionsConsentRequired\\\",\\\"score\\\":100,"
  86. + "\\\"confirmationStatus\\\":\\\"NONE\\\","
  87. + "\\\"slots\\\":{\\\"permission\\\":{\\\"name\\\":\\\"permission\\\","
  88. + "\\\"value\\\":\\\"READ::USER:PHONE\\\",\\\"values\\\":[\\\"READ::USER:PHONE\\\"],"
  89. + "\\\"score\\\":0,\\\"confirmationStatus\\\":\\\"NONE\\\"}}}]}";
  90. return String.format(url, BotConstants.BOTID);
  91. }
  92. public static boolean isNoLoginIntent(BotIntent intent) {
  93. if (!intent.name.equals("NotifyGrantStatus")) {
  94. return true;
  95. }
  96. return false;
  97. }
  98. // /**
  99. // * 产生一个固定的金额信息
  100. // *
  101. // * @return amountinfo
  102. // */
  103. // public static AmountInfo mockAmountInfo(String price) {
  104. // AmountInfo amountInfo = new AmountInfo();
  105. // amountInfo.amount = price;
  106. // amountInfo.currencyCode = "CNY";
  107. // return amountInfo;
  108. // }
  109. //
  110. // /**
  111. // * 构造卖家订单信息
  112. // *
  113. // * @return
  114. // */
  115. // public static SellerOrderStructure mockSellerOlrderStructure(String productId, String description, String sellerOrderId, String productName) {
  116. // SellerOrderStructure sellerOrderStructure = new SellerOrderStructure();
  117. //// sellerOrderStructure.productId = "111" + System.currentTimeMillis();
  118. //// sellerOrderStructure.description = "测试商品介绍";
  119. //// sellerOrderStructure.sellerOrderId = "222" + System.currentTimeMillis();
  120. //// sellerOrderStructure.productName = "测试商品名称";
  121. // sellerOrderStructure.productId = productId;
  122. // sellerOrderStructure.description = description;
  123. // sellerOrderStructure.sellerOrderId = sellerOrderId;
  124. // sellerOrderStructure.productName = productName;
  125. // return sellerOrderStructure;
  126. // }
  127. //
  128. // public static void requestBuyProduct() {
  129. // RequestBotSdkUtil.requestBuyProduct("123123123123", "191025095313376709");
  130. // }
  131. }