lpw
2022-03-11 10792d757f561de30e68eac0b79b38a85e3ca15a
commit | author | age
10792d 1 //
L 2 //  AIHelpSupportSDK
3 //
4 //  Created by AIHelp.
5 //  Copyright © 2020 aihelp.net. All rights reserved.
6 //
7
8 #import <Foundation/Foundation.h>
9 #import <AIHelpSupportSDK/AIHelpSDKConfig.h>
10 #import <UIKit/UIKit.h>
11
12 typedef void (*AISupportInitCallBack)(void);
13 typedef void (*AISupportMessageCallBack)(const int unreadCount);
14 typedef void (*AISupportPingCallBack)(const NSString * log);
15 typedef void (*AISupportIsSpecificFormCallBack)(void);
16 typedef void (*AISupportOpenSDKCallBack)(void);
17 typedef void (*AISupportCloseSDKCallBack)(void);
18 typedef void (*AISupportOperationUnReadCallBack)(const bool hasUnreadArticles);
19
20 @interface AIHelpSupportSDK : NSObject
21
22 /**
23  * Initialize AIHelp sdk
24  *
25  * When initializing AIHelp you must pass these three tokens. You initialize AIHelp by adding the following lines in the implementation file for your app delegate, ideally at the top of application:didFinishLaunchingWithOptions
26  * @param apiKey This is your developer API Key
27  * @param domainName This is your domain name without any http:// or forward slashes
28  * @param appId  This is the unique ID assigned to your app
29  */
30 + (void)initWithApiKey:(NSString *)apiKey domainName:(NSString *)domainName appId:(NSString *)appId;
31
32 /**
33  * Initialize AIHelp sdk
34  *
35  * When initializing AIHelp you must pass these three tokens. You initialize AIHelp by adding the following lines in the implementation file for your app delegate, ideally at the top of application:didFinishLaunchingWithOptions
36  * @param apiKey This is your developer API Key
37  * @param domainName This is your domain name without any http:// or forward slashes
38  * @param appId  This is the unique ID assigned to your app
39  * @param language  This is your expected init language
40  */
41 + (void)initWithApiKey:(NSString *)apiKey domainName:(NSString *)domainName appId:(NSString *)appId language:(NSString *)language;
42
43 /**
44  * Show the AIHelp conversation screen, which is Elva bot by default.
45  *
46  * If you want to change your conversation intent or custom your welcome message, please check next method  for more information.
47  */
48 + (void)showConversation;
49
50 /**
51  * Show the AIHelp conversation screen, with Optional Arguments.
52  *
53  * User CAN NOT get in touch with customer service in Bot page, unless there is an unfinished ticket or they submit a form from elva bot.
54  * However, You could configure your default conversation intent with AIHelpConversationConfig.
55  * For instance, You can show different welcome msg for different customer, make your customer service always online for your VIPs, even skipping BOT conversation and show customer service by default for them.
56  * check AIHelpConversationConfig for more information.
57  * @param conversationConfig configure different conversation actions
58  */
59 + (void)showConversation:(AIHelpConversationConfig *)conversationConfig;
60
61 /**
62  * Show the AIHelp screen with only the faqs, which is root section by default.
63  *
64  * To show the AIHelp screen with only the faq sections with search with optional arguments, you can use this api.
65  * If you want to pass some options to configure your faqs display, check next method  for more information.
66  */
67 + (void)showAllFAQSections;
68
69 /**
70  * Show the AIHelp screen with only the faqs, with Optional Arguments.
71  *
72  * User can get in touch with your customer service via FAQs, you can configure this with ECServiceFAQConfig, Such as the EXACT moment user can see the CONTACT US button.
73  * Besides, as you can get conversation via FAQs, you can configure your conversation configs wiith AIHelpConversationConfig.
74  * @param config the configs which contains custom configurations for faqs & supports
75  */
76 + (void)showAllFAQSections:(AIHelpFAQConfig *)config;
77
78 /**
79  * Show the AIHelp screen with faqs from a particular section.
80  *
81  * This api takes on the default options, if you want to pass some options to configure your faqs display, check next method  for more information.
82  * @param sectionId the publish id associated with the faq section which is shown in the FAQ page on the admin side.(https://aihelp.net/dashboard/#/FAQ)
83  */
84 + (void)showFAQSection:(NSString *)sectionId;
85
86 /**
87  * Show the AIHelp screen with faqs from a particular section, with Optional Arguments.
88  *
89  * User can get in touch with your customer service via FAQs, you can configure this with ECServiceFAQConfig,Such as the EXACT moment user can see the CONTACT US button.
90  * Besides, as you can get conversation via FAQs, you can configure your conversation configs wiith AIHelpConversationConfig.
91  *
92  * @param sectionId the publish id associated with the faq section which is shown in the FAQ page on the admin side.(https://aihelp.net/dashboard/#/FAQ)
93  * @param config the configs which contains custom configurations for faqs & supports
94  */
95 + (void)showFAQSection:(NSString *)sectionId config:(AIHelpFAQConfig *)config;
96
97 /**
98  * Show the AIHelp screen with a single faq.
99  *
100  * This api takes on the default options, if you want to pass some options to configure your faq display, check next method for more information.
101  * @param faqId    the publish id associated with the faq which is shown when you expand a single FAQ.(https://aihelp.net/dashboard/#/FAQ)
102  */
103 + (void)showSingleFAQ:(NSString *)faqId;
104
105 /**
106  * Show the AIHelp screen with a single faq, with Optional Arguments.
107  *
108  * User can get in touch with your customer service via FAQs, you can configure this with ECServiceFAQConfig.
109  * Such as the EXACT moment user can see the CONTACT US button, Besides, as you can get conversation via FAQs, you can configure your conversation configs wiith AIHelpConversationConfig.
110  * @param faqId     the publish id associated with the faq which is shown when you expand a single FAQ.(https://aihelp.net/dashboard/#/FAQ)
111  * @param config   the configs which contains custom configurations for faqs & supports
112  */
113 + (void)showSingleFAQ:(NSString *)faqId config:(AIHelpFAQConfig *)config;
114
115 /**
116  * Show the AIHelp operation screen.
117  *
118  * This api takes on the default options, which selects Elva Bot by default.
119  * If you want to change the operation default selection or elva bot title, please check next method for more information.
120  */
121 + (void)showOperation;
122
123 /**
124  * Show the AIHelp operation screen, with Optional Arguments.
125  *
126  * You can change your default selection or elva bot title by passing in ECServiceOperationConfig.
127  * Besides, as you can get conversation via FAQs, you can configure your conversation configs wiith AIHelpConversationConfig.
128  * @param config the configs which contains custom configurations for operations & supports
129  */
130 + (void)showOperation:(AIHelpOperationConfig *)config;
131
132 /**
133  * Update a user's profile via UserConfig.
134  *
135  * Please check ECServiceUserConfigfor more detail information.
136  * @param config configs which contains all information about a user.
137  */
138 + (void)updateUserInfo:(AIHelpUserConfig *)config;
139
140 /**
141  * Clear the values set to a user, reset the userId to deviceId, userName to 'anonymous'.
142  */
143 + (void)resetUserInfo;
144
145 /**
146  * Change the SDK language. By default, the device's prefered language is used.
147  *
148  * The call will fail in the following cases :
149  * 1. If a AIHelp session is already active at the time of invocation
150  * 2. Language code is incorrect
151  * 3. Corresponding localization file is not found
152  * @param sdkLanguage the string representing the language code. For example, use 'fr' for French.
153  */
154 + (void)updateSDKLanguage:(NSString*)sdkLanguage;
155
156 /**
157  * Set log path for uploading.
158  *
159  * In order to serve your customers well, you can upload customer-related-logs when tickets are created or
160  * specific forms are submitted.
161  * @param path the absolute path of log, which will be uploaded when needed
162  */
163 + (void)setUploadLogPath:(NSString*)path;
164
165 /**
166  * set the pushToken and platform to enable push notifications.
167  *
168  * To enable push notifications in the Helpshift iOS SDK, set the Push Notifications’ deviceToken using this method inside your application:didRegisterForRemoteNotificationsWithDeviceToken application delegate.
169  * NOTE: You must get the specific push sdk in your App BEFORE this invocation.
170  *
171  * @param pushToken    the pushToken received from the push notification servers.
172  * @param pushPlatform the specific push platform, please check ElvaTokenPlatform  for more information.
173  */
174 + (void)setPushToken:(NSString*)pushToken pushPlatform:(AIHelpTokenPlatform)pushPlatform;
175
176 /**
177  * Get current AIHelp SDK version
178  * @return AIHelp SDK version
179  */
180 + (NSString*)getSDKVersion;
181
182 /**
183  * Whether AIHelp session is visible to users
184  * @return whether sdk is active
185  */
186 + (BOOL)isAIHelpShowing;
187
188 /**
189  * Whether to print logs.
190  *
191  * It only works in Debug mode
192  * @param enable YES/NO
193  */
194 + (void)enableLogging:(BOOL)enable;
195
196 /**
197  * The preferred screen orientation sdk would like to run in.
198  *
199  * NOTE: The SDK direction must be included in the program direction Settings, otherwise the setting will fail
200  * @param interfaceOrientationMask please refer to the UIInterfaceOrientationMask API
201  */
202 + (void)setSDKInterfaceOrientationMask:(UIInterfaceOrientationMask)interfaceOrientationMask;
203
204 /**
205  * Set up host address for network check with result callback.
206  *
207  * With this api, you can get the network check result passing back to you.
208  * @param address host address for network checking, without schemes such 'https://' or 'http://'.
209  *                    For example, you can pass in 'www.google.com' or just 'google.com', no schemes are needed.
210  * @param callback    network check result callback, you can get the check result via this callback
211  */
212 + (void)setNetworkCheckHostAddress:(NSString*)address callback:(AISupportPingCallBack)callback;
213
214 /**
215  * Register callback for the process of AIHelp's initialization.
216  *
217  * After you register this callback, SDK will let you know if the init work is done.
218  * You can call this method either before or after the init method.
219  * @param callback callback for AIHelp initialization
220  */
221 + (void)setOnInitializedCallback:(AISupportInitCallBack)callback;
222
223 /**
224  * start in-app unread message count polling
225  *
226  * This is a schedule work, get unread message count every five minutes.
227  * If you want to stop a started polling, just pass null to the listener parameters.
228  * @param callback callback for unread message polling
229  */
230 + (void)startUnreadMessageCountPolling:(AISupportMessageCallBack)callback;
231
232 /**
233  * Set the SDK display mode
234  *
235  * Default following system
236  * @param mode
237             0: follow the system
238             1: light mode
239             2: dark mode
240  */
241 + (void)setSDKAppearanceMode:(int)mode;
242
243 /**
244  * AIHelp provide additional support for some country or regions.
245  *
246  * @param countryOrRegion ISO country code, please check https://www.iso.org/obp/ui/#search to learn more.
247  */
248 + (void)additionalSupportFor:(AIHelpPublishCountryOrRegion)countryOrRegion;
249
250 + (void)showUrl:(NSString *)url;
251
252 + (void)setKeyWindow:(UIWindow *)keyWin;
253
254 + (void)setOnAIHelpSessionOpenCallback:(AISupportOpenSDKCallBack)callback;
255
256 + (void)setOnAIHelpSessionCloseCallback:(AISupportCloseSDKCallBack)callback;
257
258 + (void)setOnSpecificFormSubmittedCallback:(AISupportIsSpecificFormCallBack)callBack;
259
260 + (void)setOnOperationUnreadChangedCallback:(AISupportOperationUnReadCallBack)callback;
261
262 + (void)setSDKEdgeInsetsWithTop:(float)top bottom:(float)bottom enable:(BOOL)enable;
263 + (void)setSDKEdgeColorWithRed:(float)red green:(float)green blue:(float)blue alpha:(float)alpha;
264
265
266 @end