• [技术干货] NASA JPL接口错误
    代码如下,一直无法连接上NASA的API是为什么呢import loggingfrom typing import Dict, Listfrom astroquery.jplhorizons import Horizonsfrom astropy.time import Timeimport astropy.units as uimport pandas as pdimport timeimport randomimport requestsfrom requests.adapters import HTTPAdapterfrom urllib3.util.retry import Retryfrom tqdm import tqdm # ============== 日志配置 ==============logging.basicConfig(    level=logging.INFO,    format='%(asctime)s - %(levelname)s - %(message)s')logger = logging.getLogger(__name__) # ============== 代理池配置 ==============try:    import socks  # 检测 SOCKS5 支持    PROXY_POOL = [        {"host": "104.248.63.15", "port": 30588, "type": "http"},        {"host": "104.248.63.18", "port": 30588, "type": "http"},        {"host": "104.248.63.17", "port": 30588, "type": "http"},        {"host": "104.248.63.49", "port": 30588, "type": "http"},        {"host": "45.77.71.140", "port": 9050, "type": "socks5"}    ]except ImportError:    logger.warning("未检测到 SOCKS5 支持,已过滤 SOCKS 代理")    PROXY_POOL = [        p for p in [            {"host": "104.248.63.15", "port": 30588, "type": "http"},            {"host": "104.248.63.18", "port": 30588, "type": "http"},            {"host": "104.248.63.17", "port": 30588, "type": "http"},            {"host": "104.248.63.49", "port": 30588, "type": "http"}        ] if p["type"] != "socks5"    ]class SmartProxyPool:    """智能代理池(自动淘汰失效代理)"""    def __init__(self, proxies: List[Dict]):        self.proxies = [{            "url": self._format_url(p),            "success": 0,            "fail": 0,            "score": 100.0        } for p in proxies]     @staticmethod    def _format_url(proxy: Dict) -> str:        """生成代理URL"""        if proxy["type"] == "socks5":            return f'socks5://{proxy["host"]}:{proxy["port"]}'        return f'http://{proxy["host"]}:{proxy["port"]}'     def get_best_proxy(self) -> Dict:        """选择最优代理"""        self.proxies.sort(key=lambda x: x["score"], reverse=True)        return {            'http': self.proxies[0]["url"],            'https': self.proxies[0]["url"]        }     def update_score(self, proxy_url: str, success: bool):        """更新代理评分"""        for p in self.proxies:            if p["url"] == proxy_url:                if success:                    p["success"] += 1                    p["score"] = min(p["score"] * 1.1, 100.0)                else:                    p["fail"] += 1                    p["score"] *= 0.5                break proxy_pool = SmartProxyPool(PROXY_POOL) # ============== 网络会话 ==============def create_secure_session() -> requests.Session:    """创建增强型网络会话"""    session = requests.Session()    session.proxies = proxy_pool.get_best_proxy()     # 重试策略(指数退避 + 随机抖动)    retry = Retry(        total=5,        backoff_factor=0.5 + random.random(),  # 随机抖动        status_forcelist=[500, 502, 503, 504],        allowed_methods=frozenset(['GET', 'POST']),        respect_retry_after_header=True    )     adapter = HTTPAdapter(        max_retries=retry,        pool_connections=50,        pool_maxsize=100,        pool_block=True    )    session.mount('https://', adapter)    session.mount('http://', adapter)     def request_with_retry(method: str, url: str, **kwargs):        """带代理切换的重试机制"""        for _ in range(3):            current_proxy = session.proxies            try:                resp = session.request(                    method=method,                    url=url,                    timeout=(20, 40),                    **kwargs                )                resp.raise_for_status()                proxy_pool.update_score(current_proxy['http'], True)                return resp            except (requests.ProxyError, requests.ConnectTimeout) as e:                proxy_pool.update_score(current_proxy['http'], False)                logger.warning(f"代理 {current_proxy} 失败: {str(e)}")                session.proxies = proxy_pool.get_best_proxy()        raise requests.ConnectionError("所有代理尝试失败")     session.request = request_with_retry    return session # 注入全局会话Horizons._session = create_secure_session() # ============== 天体数据 ==============SOLAR_SYSTEM_IDS = {    "Sun": 10,    "Mercury": 199,    "Venus": 299,    "Earth-Moon Bary": 3,    "Mars": 499,    "Jupiter": 599,    "Saturn": 699,    "Uranus": 799,    "Neptune": 899,    "Pluto": 999} # ============== 参数配置 ==============EPOCH = Time.now().utc  # 使用 UTC 时间OBSERVER = '500@0'QUANTITIES = '1,9,15,19,20,23' # ============== 核心函数 ==============def get_solar_positions() -> pd.DataFrame:    """获取所有天体的位置数据"""    results = []     for name, obj_id in tqdm(SOLAR_SYSTEM_IDS.items(), desc="查询进度"):        try:            obj = Horizons(                id=obj_id,                location=OBSERVER,                epochs=EPOCH.jd,                id_type='id'            )            eph = obj.ephemerides(quantities=QUANTITIES)[0]             # 安全获取字段            results.append({                "Name": name,                "RA (hms)": f"{eph.get('RA', 'N/A'):.3f}h",                "DEC (dms)": f"{eph.get('DEC', 'N/A'):.3f}°",                "Distance (au)": f"{eph.get('delta', 'N/A'):.5f}",                "Apparent Mag": f"{eph.get('V', 'N/A'):.1f}",                "Angular Size ('')": f"{eph.get('ang_width', 'N/A'):.2f}",                "Sky Motion": f"{eph.get('RA_rate', 'N/A'):.2f}/{eph.get('DEC_rate', 'N/A'):.3f}''/min",                "Light Time (min)": f"{(eph.get('lighttime', 0) * 1440):.1f}" if eph.get('lighttime') else 'N/A'            })        except (requests.HTTPError, KeyError) as e:            logger.error(f"数据错误 [{name}]: {str(e)}")            results.append({"Name": name, "Error": "数据解析失败"})        except requests.RequestException as e:            logger.error(f"网络错误 [{name}]: {str(e)}")            results.append({"Name": name, "Error": "连接超时"})        except Exception as e:            logger.error(f"未知错误 [{name}]: {str(e)}")            results.append({"Name": name, "Error": "系统异常"})     return pd.DataFrame(results) # ============== 主程序 ==============if __name__ == "__main__":    logger.info("正在获取数据,可能需要1-2分钟...")    df = get_solar_positions()     print(f"\n====== 太阳系天体坐标(UTC {EPOCH.iso})======")    print(df.to_markdown(index=False))     df.to_csv('solar_system_positions.csv', index=False)    logger.info("结果已保存至 solar_system_positions.csv")
  • [互动交流] 在谷歌Chrome浏览器的“沉浸式翻译”插件中,想调用华为云的自然语言处理NLP的机器翻译API,各个空格应该怎么填?
    在谷歌Chrome浏览器的“沉浸式翻译”插件中,想调用华为云的自然语言处理NLP的机器翻译API,需要填写“自定义API接口地址”、“模型”、“System Prompt”、“Prompt”、“Multiple Prompt”、“Subtitle Prompt”这几项,请问这几项应该填什么?
  • [问题求助] token已经获得,请求头格式正确但设备影子获取不了,报错403,如图:
    程序部分:控制台输出部分:详细data:
  • [问题求助] 请问使用二级VDC的domain和二级VDC下账号 如何获取token
    这边使用HCS API进行对接使用二级的VDC domain和二级的VDC用户和获取token时报 401;使用一级的VDC domain和二级的VDC用户可以获取到token;请问下使用二级VDC domain和二级VDC下用户是不是不支持认证? 请求地址:https://ip:port/v3/auth/tokens payload = {"auth": { "identity": { "methods": ["password"], "password": {"user": { "name": username, "password": password, "domain": {"name": domain} #mo_bss_admin }} }, "scope": {"domain": {"name": domain}} #mo_bss_admin }}
  • [问题求助] IVR无法收集按键
    问题来源: 亿迅问题类别:IVR(gsl / vxml1.0 / vxml2.0 / vxml2.1)AICC解决方案版本: CTI版本:ICD V300R008C25期望解决时间:尽快需求:复合CELL进行三次菜单输入校验,错误时提示输入错误重新输入,三次挂机问题:1.第一次播放07100074.wav(自助服务请按1),还没等到超时时间就触发了超时事件首次输入超时设置了240秒2.超时之后播放99000001.wav(输入错误请重新输入)+重新播放 07100074.wav(自助服务请按1) 都失败了,Get MSG_SSP_SCP_PLAYRECORD_RES, but the result is NOT success! msg.result=0上图  07100074.wav可以播放3. 再播放99000001.wav(输入错误请重新输入)99000001.wav 前面一次放音失败了4.超过三次错误挂机
  • [问题求助] IVR 挂起转挂断
    【问题来源】【必填】亿迅【问题简要】【必填】坐席发起挂起转IVR进行身份验证,验证方挂断,无法根据事件区分是IVR验密返回还是挂机【问题类别】【必填】CC-Gateway【AICC解决方案版本】【必填】AICC 24.100.0【期望解决时间】【选填】在线等【问题现象描述】【必填】1、电话呼入坐席11015接听2、11015发起一个挂起转身份验证IVR3、用户在身份验证IVR挂断4、坐席工作台无法根据事件区分是IVR结束返回坐席,还是用户在IVR中挂机
  • [问题求助] 【linksoft】【API测试】api测试功能,一直在转圈
    场景:API开发后,进行测试,界面一直转圈,无法使用
  • [问题求助] agentDemo如何设置支持输入6位工号,是否有对应版本下载
    【问题来源】交通银行【问题简要】agentdemo【问题类别】【AICC】【AICC解决方案版本】【23.200】【问题现象描述】agentdemo支持输入6位工号【日志或错误截图】
  • [其他问题] OBS对象通过API方式下载,内容中文乱码
    将一个包含中文的文件(格式已设置为UTF-8)存入桶,然后通过api的方式获取对象,内容解析时中文乱码。我把所有知道的编码格式都转了一遍都拿不到中文:1. ASCII (American Standard Code for Information Interchange)2. UTF-8 (Unicode Transformation Format-8)3. UTF-16 (Unicode Transformation Format-16)4. ISO-8859-1 (Latin-1)5. GB2312 (Chinese Simplified)6. GBK (Chinese Simplified)7. Big5 (Chinese Traditional)8. Shift JIS (Japanese)9. EUC-KR (Korean)10. UTF-32 (Unicode Transformation Format-32)
  • [问题求助] GSL排队问题
    问题来源: 亿迅问题类别:IVR(gsl / vxml1.0 / vxml2.0 / vxml2.1)AICC解决方案版本:   CTI版本:ICD V300R008C25期望解决时间:尽快需求:客户排队30秒需要播放语音 按1继续排队,留言请按2 目前实现方法:队列设置排队超时溢出IVR,播放语音按1重回队列 问题:     1,溢出到IVR的时候不算排队时间了,排队数也没了,排队数也不会再计算了,报表的排队时间和排队数就不准    2,溢出到IVR会重新开始排队,再很忙的时候会不会一直排不到他?   
  • [问题求助] 携带USER-TO-USER SIP返回400
    问题来源: 亿迅问题类别:IVR(gsl / vxml1.0 / vxml2.0 / vxml2.1)AICC解决方案版本:   CTI版本:ICD V300R008C25问题简要:      在跟第三方机器人对接过程中使用呼叫建立CELL,传递user-to-user 数据请求被拒接,SIP 400  请求不被理解        不加user-to-user之后,可以正常转接到对方,请问是哪里的问题呢?
  • [问题求助] 外呼随路大小限制
    问题来源: 亿迅问题类别:IVR(gsl / vxml1.0 / vxml2.0 / vxml2.1)AICC解决方案版本:   CTI版本:ICD V300R008C25问题简要:    IVR 外呼到第三方智能应答机器人,需要携带随路数据,随路最大能多少字节呢?ie信息值最大才255         
  • [问题求助] GSL排队问题
    问题来源: 亿迅问题类别:IVR(gsl / vxml1.0 / vxml2.0 / vxml2.1)AICC解决方案版本:   CTI版本:ICD V300R008C25问题简要:         1. IVR 调用请求路由CELL之后查询是否有空闲坐席,没有就播放排队音乐,有空闲坐席再调用转移呼叫CELL,但是在IVR播放排队音的时候CMS监控不到排队数,请问我在未调用转移呼叫CELL的时候算在排队吗?2 . 如果单纯调用请求请求路由CELL,未调用转移呼叫CELL不算排队,那么我排队溢出到IVR让用户输入继续排队请按1,排队位置会变吗?如何不改变客户的排队位置实现 继续排队请按1的逻辑呢? 
  • [问题求助] SCE复合CELL库经常回滚
    问题来源: 中信保诚人寿问题类别:IVR(gsl / vxml1.0 / vxml2.0 / vxml2.1)AICC解决方案版本:   CTI版本:ICD V300R008C25问题描述:        修改过的复合CELL在SCE工具里面再次打开就回退了,或者删除的复合CELL在下次打开又出现在复合CELL库里面,请问如何避免呢?
  • [问题求助] WEB请求CELL看不到POST请求体
    问题来源: 中信保诚人寿问题类别:IVR(gsl / vxml1.0 / vxml2.0 / vxml2.1)AICC解决方案版本:   CTI版本:ICD V300R008C25问题描述:        WEB请求的CELL如何查看请求日志呢?请求错误之后看不到请求体调试很麻烦
总条数:1464 到第 页
上滑加载中