bibot 1.0.22 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { predefinedQuestionsType } from '../services/plugin-api';
2
3
  interface UseBiBotChatBotProps {
3
4
  clientId: string;
4
5
  }
@@ -23,7 +24,7 @@ declare const useBiBotChatBot: ({ clientId }: UseBiBotChatBotProps) => {
23
24
  sendInputInquiry: () => Promise<void>;
24
25
  chatBubbleConfig: ChatBubbleConfigProps | undefined;
25
26
  showPredefinedQuestions: boolean;
26
- predefinedQuestions: string[];
27
- handlePredefinedQuestionSelect: (question: any) => void;
27
+ predefinedQuestions: predefinedQuestionsType[];
28
+ handlePredefinedQuestionSelect: (question: predefinedQuestionsType) => void;
28
29
  };
29
30
  export { useBiBotChatBot };
package/dist/index.js CHANGED
@@ -3488,16 +3488,33 @@ var AppProvider = function AppProvider(_ref) {
3488
3488
  };
3489
3489
 
3490
3490
  var getRemoteClientChatPredefinedQuestions = function getRemoteClientChatPredefinedQuestions(params) {
3491
- return Promise.resolve(_catch(function () {
3492
- var path = "" + domain.inference + resources.predefinedQ;
3493
- return Promise.resolve(pluginAxiosInstance.get(path, {
3494
- params: params
3495
- })).then(function (response) {
3496
- return response.data.predefined_messages;
3497
- });
3498
- }, function () {
3499
- return ['These are placeholders', 'They will be removed in production', 'This will be empty if there are no predefined questions', 'So hide if there are no predefined questions'];
3500
- }));
3491
+ try {
3492
+ return Promise.resolve(_catch(function () {
3493
+ var path = "" + domain.inference + resources.predefinedQ;
3494
+ return Promise.resolve(pluginAxiosInstance.get(path, {
3495
+ params: params
3496
+ })).then(function (response) {
3497
+ console.log(response.data.predefined_questions);
3498
+ return response.data.predefined_questions;
3499
+ });
3500
+ }, function () {
3501
+ return [{
3502
+ question: 'These are placeholders',
3503
+ answer: ''
3504
+ }, {
3505
+ question: 'They will be removed in production',
3506
+ answer: ''
3507
+ }, {
3508
+ question: 'This will be empty if there are no predefined questions',
3509
+ answer: ''
3510
+ }, {
3511
+ question: 'So hide if there are no predefined questions',
3512
+ answer: ''
3513
+ }];
3514
+ }));
3515
+ } catch (e) {
3516
+ return Promise.reject(e);
3517
+ }
3501
3518
  };
3502
3519
  var getRemoteClientChatBubbleConfig = function getRemoteClientChatBubbleConfig(params) {
3503
3520
  try {
@@ -3520,64 +3537,49 @@ var getRemoteClientChatBubbleConfig = function getRemoteClientChatBubbleConfig(p
3520
3537
  return Promise.reject(e);
3521
3538
  }
3522
3539
  };
3540
+ var handleRetries = function handleRetries(data, attempt) {
3541
+ try {
3542
+ var maxAttempts = 30;
3543
+ var delay = 10000;
3544
+ if (attempt >= maxAttempts) {
3545
+ return Promise.resolve("Sorry this is taking longer than usual. Please try again later");
3546
+ }
3547
+ return Promise.resolve(new Promise(function (resolve) {
3548
+ return setTimeout(resolve, delay);
3549
+ })).then(function () {
3550
+ return _catch(function () {
3551
+ return Promise.resolve(askTimedOutBiBot(_extends({}, data, {
3552
+ tries: attempt + 1
3553
+ }))).then(function (message) {
3554
+ if (message === defaultSlacker) {
3555
+ return Promise.resolve(handleRetries(data, attempt + 1));
3556
+ } else {
3557
+ return message;
3558
+ }
3559
+ });
3560
+ }, function (error) {
3561
+ return error.message;
3562
+ });
3563
+ });
3564
+ } catch (e) {
3565
+ return Promise.reject(e);
3566
+ }
3567
+ };
3523
3568
  var askBiBot = function askBiBot(data) {
3524
3569
  try {
3525
3570
  return Promise.resolve(_catch(function () {
3526
3571
  var path = "" + domain.inference + resources.q;
3527
3572
  return Promise.resolve(pluginAxiosInstance.post(path, data)).then(function (response) {
3528
3573
  if (response.data.message === defaultSlacker) {
3529
- return _catch(function () {
3530
- return Promise.resolve(new Promise(function (resolve) {
3531
- return setTimeout(resolve, 6000);
3532
- })).then(function () {
3533
- return Promise.resolve(askTimedOutBiBot(_extends({}, data, {
3534
- tries: 2
3535
- })));
3536
- });
3537
- }, function (error2) {
3538
- if (error2.code === 'ECONNABORTED' || error2.message.includes('Endpoint request timed out')) {
3539
- return _catch(function () {
3540
- return Promise.resolve(new Promise(function (resolve) {
3541
- return setTimeout(resolve, 6000);
3542
- })).then(function () {
3543
- return Promise.resolve(askTimedOutBiBot(_extends({}, data, {
3544
- tries: 3
3545
- })));
3546
- });
3547
- }, function (error3) {
3548
- return error3.message;
3549
- });
3550
- } else {
3551
- return error2.message;
3552
- }
3553
- });
3574
+ return Promise.resolve(handleRetries(data, 1));
3554
3575
  } else {
3555
3576
  return response.data.message;
3556
3577
  }
3557
3578
  });
3558
3579
  }, function (error1) {
3580
+ console.log('This is the error1 from the endpoint on the 1st try:', error1);
3559
3581
  console.log(error1.message);
3560
- if (error1.code === 'ECONNABORTED' || error1.message.includes('Endpoint request timed out')) {
3561
- return _catch(function () {
3562
- return Promise.resolve(askTimedOutBiBot(_extends({}, data, {
3563
- tries: 2
3564
- })));
3565
- }, function (error2) {
3566
- if (error2.code === 'ECONNABORTED' || error2.message.includes('Endpoint request timed out')) {
3567
- return _catch(function () {
3568
- return Promise.resolve(askTimedOutBiBot(_extends({}, data, {
3569
- tries: 3
3570
- })));
3571
- }, function (error3) {
3572
- return error3.message;
3573
- });
3574
- } else {
3575
- return error2.message;
3576
- }
3577
- });
3578
- } else {
3579
- return error1.message;
3580
- }
3582
+ return error1.message;
3581
3583
  }));
3582
3584
  } catch (e) {
3583
3585
  return Promise.reject(e);
@@ -3599,27 +3601,28 @@ var askTimedOutBiBot = function askTimedOutBiBot(data) {
3599
3601
  return Promise.reject(e);
3600
3602
  }
3601
3603
  };
3602
- var defaultSlacker = "Unfortunately I could not find any information that reasonably answers that question. I just forwarded your inquiry to support, they will respond ASAP.";
3604
+ var defaultSlacker = "BiBot_Retry_Later";
3603
3605
  var pluginAxiosInstance = createPluginAxiosInstance();
3604
3606
 
3605
3607
  var useBiBotChatBot = function useBiBotChatBot(_ref) {
3606
3608
  var sendInputInquiry = function sendInputInquiry() {
3607
3609
  try {
3608
3610
  setIsLoading(true);
3611
+ var input = userInput.trim();
3609
3612
  setUserInput('');
3610
3613
  return Promise.resolve(_finallyRethrows(function () {
3611
3614
  return _catch(function () {
3612
3615
  var _temp2 = function () {
3613
- if (userInput.trim()) {
3616
+ if (input) {
3614
3617
  setMessages(function (messages) {
3615
3618
  return [].concat(messages, [{
3616
3619
  sender: 'user',
3617
- text: userInput
3620
+ text: input
3618
3621
  }]);
3619
3622
  });
3620
3623
  return Promise.resolve(askBiBot({
3621
3624
  client_id: clientId,
3622
- q: userInput.trim(),
3625
+ q: input,
3623
3626
  session_id: state.sessionId,
3624
3627
  chat_id: v4()
3625
3628
  })).then(function (response) {
@@ -3635,7 +3638,7 @@ var useBiBotChatBot = function useBiBotChatBot(_ref) {
3635
3638
  if (_temp2 && _temp2.then) return _temp2.then(function () {});
3636
3639
  }, function (error) {
3637
3640
  var _error$message;
3638
- void error((_error$message = error === null || error === void 0 ? void 0 : error.message) != null ? _error$message : 'Failed to get response from server');
3641
+ console.error((_error$message = error === null || error === void 0 ? void 0 : error.message) != null ? _error$message : 'Failed to get response from server');
3639
3642
  });
3640
3643
  }, function (_wasThrown, _result) {
3641
3644
  setIsLoading(false);
@@ -3646,6 +3649,33 @@ var useBiBotChatBot = function useBiBotChatBot(_ref) {
3646
3649
  return Promise.reject(e);
3647
3650
  }
3648
3651
  };
3652
+ var askPredefinedQuestion = function askPredefinedQuestion(question) {
3653
+ try {
3654
+ setIsLoading(true);
3655
+ var input = question.question.trim();
3656
+ setUserInput('');
3657
+ if (input === question.question) {
3658
+ setMessages(function (messages) {
3659
+ return [].concat(messages, [{
3660
+ sender: 'user',
3661
+ text: input
3662
+ }]);
3663
+ });
3664
+ setTimeout(function () {
3665
+ setMessages(function (messages) {
3666
+ return [].concat(messages, [{
3667
+ sender: 'bot',
3668
+ text: question.answer
3669
+ }]);
3670
+ });
3671
+ setIsLoading(false);
3672
+ }, 1000);
3673
+ }
3674
+ return Promise.resolve();
3675
+ } catch (e) {
3676
+ return Promise.reject(e);
3677
+ }
3678
+ };
3649
3679
  var clientId = _ref.clientId;
3650
3680
  var _useState = React.useState([]),
3651
3681
  predefinedQuestions = _useState[0],
@@ -3672,9 +3702,10 @@ var useBiBotChatBot = function useBiBotChatBot(_ref) {
3672
3702
  chatBubbleConfig = _useState7[0],
3673
3703
  setChatBubbleConfig = _useState7[1];
3674
3704
  var handlePredefinedQuestionSelect = function handlePredefinedQuestionSelect(question) {
3675
- setUserInput(question);
3676
3705
  sendInputInquiry();
3677
- setShowPredefinedQuestions(false);
3706
+ askPredefinedQuestion(question);
3707
+ setUserInput('');
3708
+ setShowPredefinedQuestions(true);
3678
3709
  };
3679
3710
  var getChatBubbleConfig = React.useCallback(function () {
3680
3711
  try {
@@ -3910,38 +3941,61 @@ var useOnlineStatus = function useOnlineStatus() {
3910
3941
 
3911
3942
  var PredefinedQuestions = function PredefinedQuestions(_ref) {
3912
3943
  var questions = _ref.questions,
3913
- onSelect = _ref.onSelect;
3944
+ onSelect = _ref.onSelect,
3945
+ clientId = _ref.clientId;
3946
+ var _useBiBotChatBot = useBiBotChatBot({
3947
+ clientId: clientId
3948
+ }),
3949
+ chatBubbleConfig = _useBiBotChatBot.chatBubbleConfig;
3914
3950
  return React.createElement("div", {
3915
- className: styles['predefined-questions']
3951
+ className: styles['predefined-questions'],
3952
+ style: {
3953
+ height: '50%',
3954
+ color: '#000'
3955
+ }
3916
3956
  }, questions.map(function (question, index) {
3957
+ var _chatBubbleConfig$col;
3917
3958
  return React.createElement("div", {
3918
3959
  key: index,
3919
3960
  className: styles['predefined-questions'],
3961
+ style: {
3962
+ backgroundColor: '#fff',
3963
+ border: "0.5px solid " + (chatBubbleConfig ? (_chatBubbleConfig$col = chatBubbleConfig === null || chatBubbleConfig === void 0 ? void 0 : chatBubbleConfig.color) != null ? _chatBubbleConfig$col : '#dedede' : '#000'),
3964
+ fontSize: 16,
3965
+ margin: 5,
3966
+ textAlign: 'start',
3967
+ height: 20,
3968
+ padding: 10,
3969
+ display: 'flex',
3970
+ alignItems: 'center',
3971
+ borderRadius: 6,
3972
+ cursor: 'pointer'
3973
+ },
3920
3974
  onClick: function onClick() {
3921
- return onSelect(question);
3975
+ onSelect(question);
3922
3976
  }
3923
- }, question);
3977
+ }, question.question);
3924
3978
  }));
3925
3979
  };
3926
3980
  var ChatBubbleBiBot = function ChatBubbleBiBot(_ref2) {
3927
- var _chatBubbleConfig$col, _chatBubbleConfig$col2;
3981
+ var _chatBubbleConfig$col2, _chatBubbleConfig$col3;
3928
3982
  var clientId = _ref2.clientId;
3929
- var _useBiBotChatBot = useBiBotChatBot({
3983
+ var _useBiBotChatBot2 = useBiBotChatBot({
3930
3984
  clientId: clientId
3931
3985
  }),
3932
- chatIsOpen = _useBiBotChatBot.chatIsOpen,
3933
- messages = _useBiBotChatBot.messages,
3934
- isLoading = _useBiBotChatBot.isLoading,
3935
- messageEndRef = _useBiBotChatBot.messageEndRef,
3936
- userInput = _useBiBotChatBot.userInput,
3937
- handleUserInput = _useBiBotChatBot.handleUserInput,
3938
- handleKeyPress = _useBiBotChatBot.handleKeyPress,
3939
- sendInputInquiry = _useBiBotChatBot.sendInputInquiry,
3940
- toggleChat = _useBiBotChatBot.toggleChat,
3941
- chatBubbleConfig = _useBiBotChatBot.chatBubbleConfig,
3942
- showPredefinedQuestions = _useBiBotChatBot.showPredefinedQuestions,
3943
- predefinedQuestions = _useBiBotChatBot.predefinedQuestions,
3944
- handlePredefinedQuestionSelect = _useBiBotChatBot.handlePredefinedQuestionSelect;
3986
+ chatIsOpen = _useBiBotChatBot2.chatIsOpen,
3987
+ messages = _useBiBotChatBot2.messages,
3988
+ isLoading = _useBiBotChatBot2.isLoading,
3989
+ messageEndRef = _useBiBotChatBot2.messageEndRef,
3990
+ userInput = _useBiBotChatBot2.userInput,
3991
+ handleUserInput = _useBiBotChatBot2.handleUserInput,
3992
+ handleKeyPress = _useBiBotChatBot2.handleKeyPress,
3993
+ sendInputInquiry = _useBiBotChatBot2.sendInputInquiry,
3994
+ toggleChat = _useBiBotChatBot2.toggleChat,
3995
+ chatBubbleConfig = _useBiBotChatBot2.chatBubbleConfig,
3996
+ showPredefinedQuestions = _useBiBotChatBot2.showPredefinedQuestions,
3997
+ predefinedQuestions = _useBiBotChatBot2.predefinedQuestions,
3998
+ handlePredefinedQuestionSelect = _useBiBotChatBot2.handlePredefinedQuestionSelect;
3945
3999
  var isOnline = useOnlineStatus();
3946
4000
  return React.createElement("div", {
3947
4001
  className: "chat-bubble " + (chatIsOpen ? 'open' : ''),
@@ -3968,7 +4022,7 @@ var ChatBubbleBiBot = function ChatBubbleBiBot(_ref2) {
3968
4022
  }, React.createElement("div", {
3969
4023
  className: styles['chat-header'],
3970
4024
  style: {
3971
- backgroundColor: (_chatBubbleConfig$col = chatBubbleConfig === null || chatBubbleConfig === void 0 ? void 0 : chatBubbleConfig.color) != null ? _chatBubbleConfig$col : '#dedede',
4025
+ backgroundColor: (_chatBubbleConfig$col2 = chatBubbleConfig === null || chatBubbleConfig === void 0 ? void 0 : chatBubbleConfig.color) != null ? _chatBubbleConfig$col2 : '#dedede',
3972
4026
  height: 50,
3973
4027
  borderTopLeftRadius: 8,
3974
4028
  borderTopRightRadius: 8,
@@ -4065,8 +4119,9 @@ var ChatBubbleBiBot = function ChatBubbleBiBot(_ref2) {
4065
4119
  }
4066
4120
  }, message.text));
4067
4121
  }), showPredefinedQuestions && predefinedQuestions && predefinedQuestions.length > 0 && React.createElement(PredefinedQuestions, {
4068
- questions: predefinedQuestions,
4069
- onSelect: handlePredefinedQuestionSelect
4122
+ questions: predefinedQuestions.slice(0, 5),
4123
+ onSelect: handlePredefinedQuestionSelect,
4124
+ clientId: clientId
4070
4125
  }), isLoading && React.createElement("div", {
4071
4126
  style: {
4072
4127
  marginLeft: '20px'
@@ -4111,14 +4166,16 @@ var ChatBubbleBiBot = function ChatBubbleBiBot(_ref2) {
4111
4166
  border: 'none',
4112
4167
  cursor: 'pointer'
4113
4168
  },
4114
- onClick: sendInputInquiry
4169
+ onClick: function onClick() {
4170
+ return sendInputInquiry();
4171
+ }
4115
4172
  }, React.createElement(SendMessageIcon, {
4116
4173
  color: isLoading ? '#fff' : chatBubbleConfig === null || chatBubbleConfig === void 0 ? void 0 : chatBubbleConfig.color
4117
4174
  })))), React.createElement("button", {
4118
4175
  onClick: toggleChat,
4119
4176
  className: styles['chat-toggle'],
4120
4177
  style: {
4121
- backgroundColor: (_chatBubbleConfig$col2 = chatBubbleConfig === null || chatBubbleConfig === void 0 ? void 0 : chatBubbleConfig.color) != null ? _chatBubbleConfig$col2 : '#dedede',
4178
+ backgroundColor: (_chatBubbleConfig$col3 = chatBubbleConfig === null || chatBubbleConfig === void 0 ? void 0 : chatBubbleConfig.color) != null ? _chatBubbleConfig$col3 : '#dedede',
4122
4179
  color: '#fff',
4123
4180
  borderRadius: '50%',
4124
4181
  cursor: 'pointer',