Advertisement
Guest User

Untitled

a guest
May 19th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. package tech.ivoice.apps.scenarion.bizon;
  2.  
  3.  
  4. import com.google.common.collect.ImmutableList;
  5. import tech.ivoice.platform.extension.sdk.components.request_option.EnumRequestOptionComponent;
  6. import tech.ivoice.platform.extension.sdk.components.request_option.common.YesNo;
  7. import tech.ivoice.platform.extension.sdk.fsm_support.MessageProvider;
  8. import tech.ivoice.platform.extension.sdk.fsm_support.Platform;
  9. import tech.ivoice.platform.fsm.FsmContext;
  10. import tech.ivoice.platform.fsm.OutState;
  11. import tech.ivoice.platform.fsm.State;
  12. import tech.ivoice.platform.sdk.messages.SolutionMessage;
  13. import tech.ivoice.platform.sdk.messages.common.PlaySource;
  14. import tech.ivoice.platform.sdk.messages.session.PlayCollectSpeech;
  15.  
  16. import java.util.HashMap;
  17. import java.util.LinkedList;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.logging.Logger;
  21.  
  22. import static tech.ivoice.platform.extension.sdk.fsm_support.Tools.submitLink;
  23. import static tech.ivoice.platform.extension.sdk.fsm_support.Tools.link;
  24.  
  25. public class BizonScenarioMainComponent {
  26. public static final String DEFAULT_LANG = "ru-RU";
  27. private Logger log = Logger.getLogger(BizonScenarioMainComponent.class.getName());
  28. private Platform platform;
  29. private Audios plays;
  30.  
  31. private FsmContext<BizonScenarioMainComponent> context = FsmContext.of(this, "bizon_scenario");
  32. public OutState<BizonScenarioMainComponent> initScenario = context.outState("bizon_scenario_init");
  33.  
  34. private OutState<BizonScenarioMainComponent> done = context.outState("done", false);
  35. private OutState<BizonScenarioMainComponent> fail = context.outState("fail", false);
  36.  
  37. private EnumRequestOptionComponent<YesNo> requestYesNoFirst;
  38. private Map<String, Object> solutionParameters;
  39.  
  40. private final static String operatorPhone = "Ввести телефон";
  41.  
  42. private Parameters parameters;
  43. private enum ParametersDTO {
  44. DATE
  45. }
  46.  
  47. private class Parameters{
  48. private Map<String,String> parameters;
  49. solutionParameters = (Map<String, Object>) message
  50.  
  51. public Parameters(Map<String, String> parameters) {
  52. this.parameters = parameters;
  53. }
  54.  
  55.  
  56. public String getDate(){
  57. return parameters.get(ParametersDTO.DATE.name()).toLowerCase();
  58. }
  59.  
  60. }
  61.  
  62. public BizonScenarioMainComponent(Platform platform){
  63. this.platform = platform;
  64. plays = new Audios();
  65. link(initScenario, firstQuestion);
  66. }
  67. private State<BizonScenarioMainComponent> firstQuestion = context.state("firstQuestion")
  68. .onEnter(( (message, currentState, states, actions) -> {
  69. ;
  70. solutionParameters.forEach((k, v) -> {
  71. System.out.println(k + " " + v);
  72. });
  73.  
  74. Map<String, String> param = new HashMap<>();
  75.  
  76. solutionParameters.forEach((k, v) -> {
  77. if ((v instanceof String)) {
  78. param.put(k, (String) v);
  79. }
  80. });
  81.  
  82. requestYesNoFirst = initializeRequestYesNoFirst();
  83. parameters = new Parameters(param);
  84.  
  85. submitLink(requestYesNoFirst.option(YesNo.YES),states.playIfYes,platform,"интерес", "да");
  86. submitLink(requestYesNoFirst.option(YesNo.NO),states.playIfNo,platform,"интерес", "нет");
  87. submitLink(requestYesNoFirst.fail, states.playRedirect, platform, "интерес", "молчание");
  88. submitLink(requestYesNoFirst.unknown, states.playRedirect, platform, "интерес", "другой ответ");
  89.  
  90.  
  91.  
  92.  
  93. return actions.redirect(requestYesNoFirst.start);
  94.  
  95. })).transitions((BizonScenarioMainComponent comp) -> ImmutableList.of(comp.requestYesNoFirst.start)).
  96. build();
  97.  
  98. private State<BizonScenarioMainComponent> playIfYes = context.state("yesAnswer")
  99. .onEnter((message, state, states) -> {
  100. platform.accept((SolutionMessage) plays.playSourceIfYes());
  101. platform.accept(plays.redirectOperator(operatorPhone));
  102. })
  103. .build();
  104.  
  105. private State<BizonScenarioMainComponent> playIfNo = context.state("noAnswer")
  106. .onEnter((message, state, states) -> {
  107. platform.accept((SolutionMessage) plays.playSourceIfNo());
  108. platform.accept(plays.hangup());
  109. })
  110. .build();
  111. private State<BizonScenarioMainComponent> playRedirect= context.state("redirectAnswer")
  112. .onEnter((message, state, states) -> {
  113. platform.accept((SolutionMessage) plays.playSourceRedirect());
  114. platform.accept(plays.redirectOperator(operatorPhone));
  115. })
  116. .build();
  117.  
  118.  
  119. private EnumRequestOptionComponent<YesNo> initializeRequestYesNoFirst() {
  120. List<MessageProvider<PlayCollectSpeech>> retryAsks = new LinkedList<>();
  121. retryAsks.add(() -> plays.playCollectRepeatFirstQuestion());
  122. return new EnumRequestOptionComponent<>(platform, () -> plays.playColleсtFirstQuestion(
  123. parameters.getDate()),
  124. retryAsks,
  125. YesNo.class,
  126. DEFAULT_LANG);
  127. }
  128.  
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement