acrobits.net Open in urlscan Pro
159.65.119.193  Public Scan

Submitted URL: http://acrobits.cz/
Effective URL: https://acrobits.net/
Submission: On September 28 via manual from NL — Scanned from NL

Form analysis 0 forms found in the DOM

Text Content

 * Home
 * White Label UCaaS
   * Product tour
   * Features
   * Pricing
   * Demo on demand
 * Mobile SDK
   * SDK Documentation
 * Video Conferencing
 * Individuals

 * 
   Blog
 * 
   Client login
 * 
   Status
 * Book a discovery call

Demo

 * Home
 * White Label UCaaS
   * Product tour
   * Features
   * Pricing
   * Demo on demand
 * Mobile SDK
   * SDK Documentation
 * Video Conferencing
 * Individuals

 * Blog
 * Client login
 * Status

Book a discovery call


ACROBITS UCAAS SOLUTIONS


CREATE A BEST-IN-CLASS COMMUNICATION EXPERIENCE TODAY — NOT TOMORROW.

FOR BUSINESSES


CLOUD SOFTPHONE

Create your customized UCaaS solution with Cloud Softphone. Design, build, and
deploy your collaboration suite quickly.

LEARN more →
FOR BUSINESSES


LINKUP

Try LinkUp for custom video conferencing. Add your branding elements to the
UI/UX for a unique experience.

LEARN more →
FOR INDIVIDUALS


SOFTPHONES

Enhance your VoIP experience with softphone solutions powered by the
industry-leading Acrobits SDK

LEARN more →
FOR DEVELOPERS


VOIP SDK

Test the developer-friendly Acrobits SDK. Quickly integrate it with your
favorite apps with our powerful API.

LEARN more →

FOR BUSINESSES


CLOUD SOFTPHONE

Create your customized UCaaS solution with Cloud Softphone. Design, build, and
deploy your collaboration suite quickly.

LEARN more →
FOR BUSINESSES


LINKUP

Try LinkUp for custom video conferencing. Add your branding elements to the
UI/UX for a unique experience.

LEARN more →
FOR INDIVIDUALS


SOFTPHONES

Enhance your VoIP experience with softphone solutions powered by the
industry-leading Acrobits SDK

LEARN more →
FOR DEVELOPERS


VOIP SDK

Test the developer-friendly Acrobits SDK. Quickly integrate it with your
favorite apps with our powerful API.

LEARN more →


CLOUD SOFTPHONE & LINKUP

Upgrade your communications with Cloud Softphone and LinkUp. Explore over 100
premium features to customize and build a white label UCaaS app.

Enhance your UI/UX with seamless branding across devices.

 * 
 * 
 * 
 * 

Discover Watch video




INSTANTLY ADD VIDEO
CONFERENCING TO YOUR APPS

Explore LinkUp →


ALL THE FEATURES YOU NEED TO COMPETE

 * Cloud Softphone
 * VIdeo Conferencing


IOS APPS


ANDROID APPS


WINDOWS NATIVE APPS


MACOS NATIVE APPS


PUSH NOTIFICATIONS


SELF SERVICE


300+ CUSTOMIZATIONS PER OS


100+ FEATURES


100% NATIVE APPS


TRY & BUY


WORLD CLASS SUPPORT


ONE CLICK APP STORE UPDATES


AUTHENTICATED USERS


HIGH USER MAXIMUM


RECEIVE WORLD-CLASS SUPPORT


GLOBAL SERVER INFRASTRUCTURE


CALENDAR INTEGRATION


CUSTOM MEETING ROOMS


CALL RECORDINGS


KEEP YOUR CLIENTS CONNECTED


MEETING HISTORY


VOICE, VIDEO & CHAT


SCREEN SHARING


PSTN CALL-IN


IOS APPS


ANDROID APPS


WINDOWS NATIVE APPS


MACOS NATIVE APPS


PUSH NOTIFICATIONS


SELF SERVICE


300+ CUSTOMIZATIONS PER OS


100+ FEATURES


100% NATIVE APPS


TRY & BUY


WORLD CLASS SUPPORT


ONE CLICK APP STORE UPDATES


AUTHENTICATED USERS


HIGH USER MAXIMUM


RECEIVE WORLD-CLASS SUPPORT


GLOBAL SERVER INFRASTRUCTURE


CALENDAR INTEGRATION


CUSTOM MEETING ROOMS


CALL RECORDINGS


KEEP YOUR CLIENTS CONNECTED


MEETING HISTORY


VOICE, VIDEO & CHAT


SCREEN SHARING


PSTN CALL-IN


BUILD A BRANDED UCAAS APP IN 45 MINUTES

Book a demo to build, design, and launch your app while saving 95% on
development costs.

Book a discovery call



SOFTPHONE APPS FOR IOS AND ANDROID


LIFETIME LICENSE MEANS A ONE-TIME FEE AND NO MONTHLY PAYMENTS.

GROUNDWIRE

 * Incoming Call via Push
 * Unlimited Accounts
 * Video Calls
 * Messaging
 * Transfers and Conferencing

LEARN more →


ACROBITS:
VOIP SIP SOFTPHONE

 * Incoming Call via Push
 * Unlimited Accounts
 * Video Calls
 * Messaging
 * Transfers and Conferencing

LEARN more →



READ OUR BLOG


SIP AND AI: INTEGRATION OF ARTIFICIAL INTELLIGENCE AND UNIFIED COMMUNICATIONS


LOCAL PUSH: HOW ACROBITS INNOVATIVE APPROACH TO PUSH NOTIFICATIONS BECAME AN
INDUSTRY STANDARD


HOW TO MAINTAIN CONSISTENT BRANDING ACROSS YOUR COMMUNICATION TOOLS


HOW TO ENHANCE CUSTOMER EXPERIENCE WITH CUSTOMIZED COMMUNICATION TOOLS


THE EVOLUTION OF SIP: TRENDS AND FUTURE OUTLOOK


SECURING SIP: BEST PRACTICES FOR PROTECTING YOUR COMMUNICATION INFRASTRUCTURE




MEET OUR DEVELOPER-FRIENDLY SDK


THE ACROBITS SDK SIMPLIFIES THE ENTIRE DEVELOPMENT PROCESS.

Learn more →
 * Busy Lamp Field
 * Incoming Call
 * Number Rewriting
 * Conference Calling

 * Add busy lamp field integration to your real-time communications platform to
   see whether users are in an active call.

 * Allow your users to receive incoming calls more easily by integrating our
   platforms push to receive functionality.

 * Streamline and automate the dialing out process with our number rewriting
   capabilities.

 * Take advantage of our reliable and easy to use conference calling function
   that lets you invite more users.

 * 
 * 

 * Busy Lamp Field
   
   
   // Blf status
   val dialogInfo = Instance.Registration.getDialogInfo(accountId, uri)
   val blfString = if (dialogInfo.busyLamp) "On call" else "Off call"
   busyLampStatusLabel.setText(blfString)
   
   // Busy Lamp field iOS
   DialogInfo *dialogInfo = Softphone::instance()->registration()->getDialogInfo(uri);
   
   if (dialogInfo) {
       if (dialogInfo->busyLamp) {
           busyLampStatusLabel.text = NSLocalizedString(@"On Call", nil);
       } else {
           busyLampStatusLabel.text = NSLocalizedString(@"Off Call", nil);
       }
   }
   
   - (void)onNewEvent:(Softphone::EventHistory::Event::Pointer)event
   {
       switch (incomingEvent->eventType)
       {
           case Softphone::EventHistory::EventType::Call:
           {
               Softphone::EventHistory::CallEvent::Pointer callEvent = event.asCall();
   
               UNMutableNotificationContent *notification = [[UNMutableNotificationContent alloc] init];
               notification.title = @"Groundwire";
               notification.body = [NSString stringWithFormat:NSLocalizedString(@"Incoming call from %@", @"notification"), ali::mac::str::to_nsstring(callEvent->getRemoteUser().getDisplayName())];
               notification.sound = [UNNotificationSound defaultSound];
   
               UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:[[NSUUID UUID] UUIDString] content:notification trigger:nil];
               UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
               [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error)
               {
                   if (!error)
                   {
                       // Handle successful notification request
                   }
               }];
           }
               break;
   
           default:
               break;
       }
   }

 * Incoming Call
   
   
   // OnCall
   // ******************************************************************
   public void onNewCall(@NonNull CallEvent callEvent) {
       val context = AndroidUtil.getContext();
       String messageText = "";
   
       Class<?> activity = CallActivity.class;
       String activityAction = Activity.ACTION_MAIN;
       int notificationId = ID_CALL_IN_PROGRESS;
       var extras = new Bundle();
       String title = context.getString(R.string.app_name);
       Bitmap bitmap = AndroidUtil.getBitmap(R.drawable.icon_notification);
       messageText = AndroidUtil.getString(R.string.notification_bullet,
           messageText,
           callEvent.getAccountName());
   
       Intent intent = new Intent(context, activity)
           .setAction(activityAction)
           .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
           .putExtras(extras);
   
       val builder = new NotificationCompat.Builder(context)
           .setContentIntent(PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT))
           .setContentText(messageText)
           .setContentTitle(title)
           .setLargeIcon(bitmap);
   
       val notification = builder.build();
       val manager = (NotificationManager) AndroidUtil.getSystemService(Context.NOTIFICATION_SERVICE);
       manager.notify(notificationId, notification);
   }
   
   - (void)onNewEvent:(Softphone::EventHistory::Event::Pointer)event
   {
       switch (incomingEvent->eventType)
       {
           case Softphone::EventHistory::EventType::Call:
           {
               Softphone::EventHistory::CallEvent::Pointer callEvent = event.asCall();
   
               UNMutableNotificationContent *notification = [[UNMutableNotificationContent alloc] init];
               notification.title = @"Groundwire";
               notification.body = [NSString stringWithFormat:NSLocalizedString(@"Incoming call from %@", @"notification"), ali::mac::str::to_nsstring(callEvent->getRemoteUser().getDisplayName())];
               notification.sound = [UNNotificationSound defaultSound];
   
               UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:[[NSUUID UUID] UUIDString] content:notification trigger:nil];
               UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
               [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error)
               {
                   if (!error)
                   {
                       // Handle successful notification request
                   }
               }];
           }
               break;
   
           default:
               break;
       }
   }

 * Number Rewriting
   
   
   // Rewriting
   rewritingString = "<rewriting><rule><conditions><condition type=\"doesntStartWith\" param=\"+\"/><condition type=\"longerThan\" param=\"8\"/></conditions> <actions> <action type=\"prepend\" param=\"+420\"/> </actions> </rule> </rewriting>";
   mRewritingXml = Xml.parse(rewritingString);
   if (mRewritingXml != null) {
       Instance.Contacts.NumberRewriting.setRewriterRules(null, mRewritingXml);
   }
   
   ali::string_literal rewritingRule{
       "<rewriting>\n"
       "    <rule>\n"
       "        <conditions>\n"
       "            <condition type=\"doesntStartWith\" param=\"+\"/>\n"
       "            <condition type=\"longerThan\" param=\"8\"/>\n"
       "        </conditions>\n"
       "        <actions>\n"
       "            <action type=\"prepend\" param=\"+420\"/>\n"
       "        </actions>\n"
       "    </rule>\n"
       "</rewriting>"
   };
   
   int errorIndex = 0;
   bool success;
   
   ali::xml::tree rewritingXml;
   success = ali::xml::parse(rewritingXml, rewritingRule, &errorIndex);
   
   if (success)
       Softphone::instance()->contacts()->numberRewriting()->setRewriterRules(rewritingXml);

 * Conference Calling
   
   
   // JoinCall
   // ******************************************************************
   public static void join(String firstConferenceId, String secondConferenceId) {
       if (firstConferenceId == null || secondConferenceId == null)
           return;
       if (firstConferenceId.equals(secondConferenceId))
           return;
   
       val firstConferenceCalls = Instance.Calls.Conferences.getCalls(secondConferenceId);
       val secConferenceCalls = Instance.Calls.Conferences.getCalls(firstConferenceId);
   
       val newConferenceId = Instance.Calls.Conferences.generate("newConf");
       for (val event : firstConferenceCalls)
       Instance.Calls.Conferences.move(event, newConferenceId);
       for (val event : secConferenceCalls)
       Instance.Calls.Conferences.move(event, newConferenceId);
   
       Instance.Calls.Conferences.setActive(newConferenceId);
   }
   
   // Split Call
   // ******************************************************************
   public static void split(CallEvent callEvent) {
       Instance.Calls.Conferences.split(callEvent, false);
       Instance.Calls.setHeld(callEvent, true);
   }
   
   // Split Conference
   // ******************************************************************
   public static void split(String confId) {
       var confCalls = Instance.Calls.Conferences.getCalls(confId);
       for (int i = 0; i < confCalls.length; i++) {
           val callEvent = confCalls[i];
           Instance.Calls.Conferences.split(callEvent, false);
           Instance.Calls.setHeld(callEvent, true);
       }
   }
   
   //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   - (void)joinCall:(Softphone::EventHistory::CallEvent::Pointer)call toGroup:(const ali::string &)group
   //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   {
       Softphone::instance()->calls()->conferences()->move(call, group);
   }
   
   //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   - (void)splitCall:(Softphone::EventHistory::CallEvent::Pointer)call
   //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   {
       ali::string groupId = Softphone::instance()->calls()->conferences()->get(call);
       Softphone::instance()->calls()->conferences()->split(call, true);
   }
   
   //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   - (void)splitGroup:(ali::string const&)groupId
   //-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
   {
       ali::array_set<Softphone::EventHistory::CallEvent::Pointer> calls =
           Softphone::instance()->calls()->conferences()->getCalls(groupId);
   
       for (auto call : calls) {
           Softphone::instance()->calls()->conferences()->split(call, false);
       }
   }


SEE WHAT OUR 500+ CUSTOMERS ARE SAYING




Trustpilot


WE'RE TRUSTED BY THE BIGGEST BRANDS




PRODUCTS

 * Cloud Softphone
 * LinkUp – Video Conferencing
 * Softphone for iOS/Android
 * Groundwire for iOS/Android


COMMUNITY

 * Help Desk
 * Acrobits Documentation
 * Glossary
 * FAQs


COMPANY

 * About Acrobits
 * Reviews
 * Personal Data Protection
 * Terms of Services
 * Privacy Policy


Acrobits® 2008—2023