SaaS公司PagerDuty概况、产品功能、融资历史及主要竞品介绍
## PagerDuty简介
PagerDuty是一家SaaS(软件即服务)公司,主要提供网站、应用程序和基础设施的实时监控和响应服务。PagerDuty的产品功能主要包括:故障警报、故障自动化、值班人员调度、智能分析等。目前,PagerDuty的客户主要集中在IT、政府、金融、教育、电信和零售等行业。
PagerDuty的产品功能
PagerDuty的产品功能主要包括:故障警报、故障自动化、值班人员调度、智能分析等。
故障警报
PagerDuty可以收集来自多种监控系统的故障警报,并通过电子邮件、短信或语音电话等方式发送给值班人员。
故障自动化
PagerDuty可以通过API与第三方应用程序进行集成,实现故障自动化处理。
值班人员调度
PagerDuty可以根据值班人员的技能、经验等因素对值班人员进行调度。
智能分析
PagerDuty提供基于人工智能的分析功能,可以帮助用户识别潜在的故障模式。
PagerDuty的融资历史
PagerDuty目前已经融资10亿美元,分为10轮。融资方包括:
- A轮:500万美元,时间:2010年
- B轮:5200万美元,时间:2011年
- C轮:7100万美元,时间:2012年
- D轮:15000万美元,时间:2014年
- E轮:27000万美元,时间:2015年
- F轮:50500万美元,时间:2017年
- G轮:75000万美元,时间:2018年
H轮:90000万美元
添加", Toast.LENGTHSHORT).show(); } } }); } else { Toast.makeText(getActivity(), "请添加图片", Toast.LENGTHSHORT).show(); } } else { Toast.makeText(getActivity(), "请添加图片", Toast.LENGTHSHORT).show(); } break; case R.id.tvcommit: if (picPath != null && picPath.size() > 0) { HttpUtils.uploadPic(picPath, new HttpUtils.UploadPicListener() { @Override public void onUpload(List
pic) { if (pic != null && pic.size() > 0) { String[] picARRay = new String[pic.size()]; for (int i = 0; i < pic.size(); i++) { picArray[i] = pic.get(i); } String content = etcontext.getText().toString().trim(); if (content != null && !content.equals("")) { HttpUtils.publishDynamics(content, picArray, new HttpUtils.PublishDynamicsListener() { @Override public void onPublish(boolean isPublish) { if (isPublish) { Toast.makeText(getActivity(), "发布成功", Toast.LENGTHSHORT).show(); getActivity().finish(); } else { Toast.makeText(getActivity(), "发布失败", Toast.LENGTHSHORT).show(); } } }); } else { Toast.makeText(getActivity(), "请输入内容", Toast.LENGTHSHORT).show(); } } else { Toast.makeText(getActivity(), "发布失败", Toast.LENGTHSHORT).show(); } } }); } else { Toast.makeText(getActivity(), "请添加图片", Toast.LENGTHSHORT).show(); } break; } }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULTOK) { switch (requestCode) { case PictureConfig.CHOOSEREQUEST: // 图片选择结果回调 selectList = PictureSelector.obtainMultipleResult(data); // 例如 LocalMedia 里面返回三种path // 1.media.getPath(); 为原图path // 2.media.getCutPath();为裁剪后path,需判断media.isCut();是否为true // 3.media.getCompressPath();为压缩后path,需判断media.isCompressed();是否为true // 如果裁剪并压缩了,以取压缩路径为准,因为是先裁剪后压缩的 for (LocalMedia media : selectList) { if (media.isCompressed()) { picPath.add(media.getCompressPath()); } else { picPath.add(media.getPath()); } } if (picPath != null && picPath.size() > 0) { int size = picPath.size(); if (size == 1) { iv_add.setVisiBIlity(View.GONE); } if (size