4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
热卖商品
新闻详情
微信小程序自动回复机器人(模拟云信案例)_hangGe0111的..._CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-25

1.场景

输入关键词 对内容库进行检索 得到搜索结果 反馈给用户。其实也不算是机器人 也类似于搜索的样子 只不过以聊天界面的形式展现出来 当然了 在完成这个流程的过程中 也会出现一些问题 思路记录 仅供参考。

2.思路

2.1 毋庸置疑 首先搭建前端界面 这块没什么可说的 对方和自己的样式最好大多数一样 通过一个‘me’和‘you’来进行区分 比较好

2.2 逻辑处理部分 数据缓存处理

有些可能需要做消息的缓存处理 利用‘键名’和‘键值’保存即可 但当然了 这不是惠话 。如果业务比较简单 一个城市 一个机器人 不要判断今天是今天 有些场景可能会涉及默认消息 比如默认消息 今天只发送一次 然后等明天再发送 怎么判断今天是今天 。所以如下

2.2.1这里最好以城市加一个后缀或者前缀为键值 对发送过的消息进行做缓存处理。把城市做键值 缓存的消息体以json格式 外层数组方便遍历 数组内层每项以对象形式 对象中每一项通过键值对的方式 添加自己所需要的字段内容即可 。

2.2.2 判断今天是否发过默认消息 判断今天是今天 通过时间来区分 时间是唯一的。每发送一条消息时 获取时间 只取年月日 每次发送时从缓存中取时间 若缓存中无时间或缓存中的时间和当前时间不一致则把当前时间存入缓存并发送默认消息 若缓存时间和当前时间一致则不用更新缓存时间。每次发送消息都需要更新本地缓存记录。

2.2.3 缓存的消息一般需要做条数限制 因为小程序对缓存大小有上限 每发一条消息取出缓存中的消息把这条消息加入到取出的数组中 同时判断这个取出的数组长度是否大于最大条数限制 如果超过了就把取出的数组的第一删掉 如果没超过则不用管 然后再把取出的数组存入缓存中即可。

3.代码

3.1wxml

 view class chating-wrapper !--消息展示-- view class record-wrapper view wx:if {{current_list.length}} block wx:for {{current_list}} wx:for-item list wx:for-index listidx !-- 收 -- view class record-chatting-item {{list.kind you ? other : }} wx:if {{list.kind you }} view class record-chatting-item-img /view view class record-chatting-item-text qst view class qst-ul view class qst-li {{list.list_ul}} /view /view /view /view !-- 发 -- view class record-chatting-item {{list.kind me ? self : }} wx:if {{list.kind me }} view class record-chatting-item-text qst view class qst-ul view class qst-li {{list.list_ul}} /view /view /view view class record-chatting-item-img /view /view /block /view /view /view !--输入框-- view class chatinput-wrapper {{input_flag? mb16 : }} view class chatinput-content flex alignC flexSb view class chatinput-img /view view class chatinput-inputOut input class chatinput-input bindinput inputChange bindconfirm inputSend placeholder 请输入关键词 confirm-type send value {{inputValue}} bindfocus inputFocus bindblur inputBlue /input /view view class chatinput-sendOut view class chatinput-send catchtap inputSend 发送 /view /view /view /view 

3.2wxss

page { height: 100%; background-color: #f3f4f6;}.chating-wrapper { width: 100%; min-height: 100%; position: relative; box-sizing: border-box; background: #f6f6f6;}.record-chatting-item { width: 100%; padding: 28rpx 23rpx 0; box-sizing: border-box;}.record-chatting-item-img, .open-data-userAvatarUrl { width: 70rpx; height: 70rpx; border-radius: 100%; display: block; overflow: hidden;}.other { display: flex; flex-direction: row; justify-content: flex-start; color: #222;}.other .record-chatting-item-text { margin-left: 20rpx; margin-right: 0;}.self { display: flex; flex-direction: row; justify-content: flex-end; color: #fff;}.record-chatting-item-text { width: 455rpx; border-radius: 8rpx; background-color: #fff; padding: 26rpx; box-sizing: border-box; word-wrap: break-word; overflow: hidden; font-size: 26rpx; line-height: 42rpx; box-shadow: 0 0 8rpx #dedede;}.qst-li { font-size: 26rpx; line-height: 1.1; padding: 16rpx 6rpx; border-bottom: 1rpx solid #d9d9d9;}.qst-li:last-child { border: none;}/*底部输入框*/.chatinput-wrapper { width: 100%; background-color: #fff; border-bottom: 1rpx solid gray; position: fixed; bottom: 0; left: 0; height: 92rpx;}.chatinput-img { width: 59rpx; height: 59rpx; border-radius: 100%;}.other .record-chatting-item-img,.chatinput-img,.self .record-chatting-item-img { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAYAAAD9yHLdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAOplJREFUeNrt3XdcU9f7OPDnJGGGDbKHInuIAycIbutexD3q1ta9W ve1lG34qxbg4rWWeuWupUhG1Fk772TnN8fMW1//XytchO4CTzvf3gp3JPzXPE 92wAhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghpAq4bFcAIeVBiPVcxxyBwMpKR6tRjru7paWhpFG5u3vjxnotDZZ7HtTW1u5s1MutiMcrCc27ERVVVsZ2jRFiE2G7AgjVDX/qT3k8a9303Y3cuneHfeQNVPXoQcvpWijo2JEchEew3dUV0shyuKKt/aXSaDzdQXfk50MyMSKSiAjIgzS68P59cJRsgdnXr6caxz 0P7ZM7ajRqg2YQJB9ZJZd/uMQQtMTdUm8vpxA fMobkwnb6eMIFsIJvIEjOzWq AAEohLDYWgHgRr927AUqcgBw nLI9ZbtQWF7O9v1BSBEwgaB6wY7a0XFUU1M8T Ng2dBFiyAE9Gm/xYu/tkVR2 gN gq6pqcDANDkRYtSPeN0Lqw/derTdynb9UOICUwgSKVZRTiVDPmxWTNynwwl ufOwSZ4By9cXNiu15fQG/QVbL51SzRPVCLeO3Zs5u1E80tbsrLYrhdCNYEJBKkkK0tnp4AhAgGRwGQo//VX4MEh0NbSYrteNVYKjpCUmio5INEijfv2TRsaLxQKQ0PZrhZCX4PDdgUQqglrF6cpAT9OmkQ6wEB69uxZlU0cMnyIBzsrK2LIsad59 9bajrrDJ7j48N2tRD6GphAkEqQtTjAgxjQVQcOwFO4TEZw6s3vLxkPwWCor0/CYA n2dWr1nOdwwUBnp5s1wuh/4JdWEip/TXG0Z3sI6FPn9Z2i4P/kPdOtLC01PY4f2a5Zmam7O8/ji3dpVVhZlbqJ2rK 5nPr 246S gC7Hv3/OGVLyoDm/ZMokkkcukoKC2PxehmsAEgpTSX7Oqdmv2Kd385o2iB8f7PrPSzEx4/XpatEPb95fLyjwb6XcqWeTiwmlGQulNE5PPXSd5Q/eTEdnZEZcKtuoejYnZdyaea/dOR daRfom8zktWij6PtClcBWqz55NnR7rGHR5xIjaut8IMYEJBCkl67lOgQLB8uUgJFspXbVK3vLaHjM5m3cuOvrw0NYfwg5VV vnqj8RLWrWTFH1LYDKTbzjYWGT7rw44tVXXf3Zt7mbjYa5uirshgiglJBevVK2x6YIhTdvKqxchOSACQQplb8WABbyHnCbvX8v7zqO bdchyUsf/RojpvTnfcH2rYFAB84qa5eiyGEwOiqqm3PYjbZL37 fHtA7MSm83x95S2UvqBCOPD2bapFXDN3Iy8vAIBVRCKpxTgQ iJMIEipWJ91ah2gt349LCBF0OOHH5iWs3FM84lRNg8fjlpvl5N6xM PrXhOCN /ty548ODHeeHhrgJ/f7kLFEhCCBk8OGV7vIlQeOkSW3EhBICzsJDSkO5VJdtyhGkpQ4tst6T 9uLFqPV2Mal/yP/mL68xgibrUjr6 g4KtClML3z5Ut7y6CaOv TAlClsx4UQACYQpCRkmxwy3atK xonVLyqtPTnu80Toufb2QGACXxUimm hyCCy91e2TzxraeNjfZWzklJW a7 JLddC 52a2brKuP7eBQw6YM/8EQAtnuuEwv3xjTfExk5MuXnFYkne5RvgcrdyBnJRw2M9sgbOYdueDFC8YFbSNT4CKPp7ZcfTSnrGtXtuNCDRsmEKQUZNuq1/Q6YgvOEEBp/2obt0yRoyPbcXxJf0/b1IxbDg5E3tFHfcnvZCR7YzsIAWACQUqBkL/O46ihNquNB QJYmK4o6ACpltash3Jl/CWk50wzMqqVZxx88LbMTFMy6Ga5CXYubmxHQ9q2DCBIFbZ3nQpHZRtbs50um73V ZHc2ZnZ7MdR0319DNPzbrMfPdd0hZWw CmTdmOAzVsmEAQq6qTJHM5PfX1mV5v/5i/t9xK9dZDNJ6u7Vf2RI56f0svghHz 4aQImACQaziHIffJas0NJhebzBa3bNqidwjCnXOmK xTq5628ATGKepyXYcqGHDBIJYRdrwNvN LS1len3upMq26m5VVWzHUVPZhyoE6mMqKxkXsAGaQGBREdtxoIYNEwhilWSV5EH1mvx8ptfHri/5TSeLeQuGLXHVJZ11 XK0IHxAh67OyWE7DtSwYQJBrErTi9kT7JqbC5X0NuTk5dX0 ou/Jm wMGvUiO04aio4PuWw2ffM16vQpWQHMY2KYjsO1LBhAkFKgYaQDDjx9m1Nr0vMKLmh7ebqWs2XtCeHmE LrSuV4ZJdJDg6 h0pKeWvZr49PZlJX0EoHn2L2IUJBCmHPEijC /fZ3r5fr EZU22v3/Pdhhfstc/7naTpR8 yFsOvUYLqB1u647YhQkEKQX6G2jB2lu3mF6/dXBMgj3t2FHkq5wtkSqxxJY8jor6ZXSsZZOzzFeQ0/30OKRmZKQaxz/2aCfHligIKQAmEKQU0tbF9rzg8OQJGNED0C4 vqbXi1dTO2KlozMo89GC1pk5OQCQT98XFrIdFwDw6P3i4oB9j3itJYWFkmDoxZnH/EhcUgIzIPLoUQA8DwSxDxMIUiKUQldynDw9eJBpCaEVBTz9 76 S/3D1rjcfPgQAILhp4oKFoJxp6vLyxfzw467nn348M2mgu36a9q3Z3xnNtGH9ER1NXcYec4tDAxkIR6E/gcmEKRUKlO43wDs2wcLYAp0Z77Vx/HED/62F/v1G7XuT2GrvLt36XsopoEpKbVdf5pM19Hp6enjLJ6eaGH66NFpow98m3d9 shd8DkyDM4dOpREYsk5Iv8YCkKKgAkEKZVsYdRQYVBJCXxPzSBX/rPQH 7PHmoU37t381030jr/SmnYuAJfvWsXLoDiWiYhMLqqKo5f3IP/7a1brf641dl/uFh8l5eZ3OgC8 3pZegd BF6FxTwLnO/41xbvVoR9xghRVG5LSBQw7GCcjhW1On8W7h7l9iQZUQRR8J Yn1U 1zFk99/P2C64sOQtT16mJt//HjjBoC2dnHx /cAmpqlpampf/98RQWfb2UFUFqqp2dvD1CyyHCcW9WjR6PHbE188by8PGV82TDN9vInjH8j7SGGkPHjk4WxRCg8dqxObjxCXwkTCFJqFgfczgsCbG05ViI7mvrsGZlGxoKVubmiyt 3LzhYKGRw4VvSBejBg9P3DNATDJ08WdFx06VwFarPnk2dHusYdHnECEWXj5AiYBcWUmrpU6OGCoM fiQ9IV6S3L8/tKXnaSDzvbOUHT0OBeD68qWEozO8YtnEiWzXB6H/ggkEqYQUtbjRF1NevICzEEGbde4MbcCAbq1He0HpAx 8wsMl8XSAmnWvXulTX7266s387HSE6gKP7QqghsWse7Ofx5jy dzJ5c8r/B0dOfbEUPKucWPIhCTYbGVFjcl0OGRqSvpAMUm2tIRNsAbM9fXpWFCjB3V1YSDMIiUaGnQj/QjXqqtJL9KK7ZgU4iMdD6e1tblOpHH1jTNnrAOd2gZ8W1EBHLIJisvLqQEch1lZWSSEhpPdWVlwA15Sx7Q0yXOOGtzOyKBnJNVUnJBgaMjrxrFPTIwaGjVUGKR6uxQj1YJjIEgBCLEscvl 2C5HR04YxIqiW7Wi5yX25EqrVoRHkmhiixZwDNSIj7Mz8CEe7Kys2K6xjLKOgTAmgMUgEovpKHgM/klJ5BTMoSOio kwSIQ5r15xJtCWJOP1a0lXSbBE89Wr1F0Jsy7erP3pzah whYI io2Zi6/D1rg4SGJolGcIV26kOY0k zw94fW5C7d5OcHbvQP8XwTEwDpWwkBkgztpNeSkQDABwA7tqNoAISwCXhcLhECQIi9PQCEkBB7eyIEAOjThwIBMAEgl7jAAQCrrc4aQ159 ED86ThCHzwgm8gBsun fVE3rhDo3buyMSi2w0LKCRMI sSf lMez ZiZqipoHNnOk7ymEb260dXkgX0ZL9 dDudSTY0bky8AGArwF N1 cAZD7bdUdMke3QmGxo3Bi2kwcAjRtTABcK48Zxn4gBAMB6rvOuAPPQUJoFqyH/6lVOM hHz12 nLw49siFgS9fsl1/xC5MIA2UzWPXoCHD3d3pEkk8GT1mDB2RfpS /ZbOotsomBmBvoEwF32gGG7tog1QtgNvs2bEwAjgObN6QMIISd/ sl6rtOlgBYfP8ILEgNrzpyRqEE8 fXo0bR7sUeEwthYtquN6gYmkHrOjtrRAdTAQHRBs7X60HHjSAhk0NDp0 lwyVIQOTsDAMAxALKB4IAY npCsgSa2toCAMCxxYs5AEBh8WKrHc4TAniPH5OW5COdsnevXjpnCifrwgUc1K fMIHUM1ZBrmuGqDs6khBxBRxfsEAcAOGQP2oUeQbFlPL5AMAHL7Zrieor8jOEwEBfXwAKJMvXt/AHUYlkY2am1Q7nCQHDAwPFoeLm5OyuXRlHE2YJg7Kz2a4vkg uA1FxFgdcSgdlt2xpfcjZKWDI fPkrKQYSmNiQEiCSNCUKfCMDCVTmG8fjpA8yAayiSwxMyM/QwicXbaMF8kxo/0/fLDWddoV4Lpzp2ynAbbriZjBXgsVY17puGjYdFdXngPhivPXrgUrEgkDBw2CFIiFIKLy/55aWfyj2mHFxQZ5hiXGq3Jz9cSGrYzGl5QYljfqYuhfXq79g/ZHrUUiEQDpw kDoBehv1/fWSRi nk9VwQkDwrr2LGm1xETsgPg0aObM4VbLsnRoivyLJxWGMvjAdBrkmsAZdalgWVv1NTy7XMN8xO1tIrM8i7n39bRKWiTZ5obZGxc3rzsZNlaHZ26 deoffQ0ZEFlVRVZRv Eufv3V6uLDMXX163LvJ1ofmkL892YUd1Q QdOfWdH3c4LBObmojTxTcmotWvJFvAlx779VjZdk 36fQ53PHcNV0sstrnbtKiJZVKSc7jnAfeMrCwHP/d97luqqqxybMfavNLS4u/WS9CfamCg3lctmRduYQGHSB7Rqz8PSEWjD jvtKCoqHp3lVpVcXp6iX9RRdHIgoIU3Q/WSY8qKuKGh1 JHKKuHpP79nDEGjOz9A8fLyevtbOTnBAvk1Qr7 /LXwQ0AopLSug2okZvbt0qCdTxrny1eTOuzFdOmECUTKuWrVpOmaymliEuHpQ7c8YMmE2eg/nKlWQ5xJHv9PTYrp8M77mGtbpDVVWLgDZnvftGR3vr Bp2nFdUZH/b1dnJxcCAL9LrobvXwYFch1mEr6XFdn0brEnUiBaVlBRLClMKw PiYrPetozaUVz8cs/DxMczjIzear0sfl3m6ipeIRkmPsJTvjHRRfQqdExKgvWc3 HWvHkpGTHfB12/eJHtaiEpTCBKwrLI5XuBoH17EiFpT1scPEiGkTXw2t2d7XoZiI3zjPPy87ue7T 6T0h0dCttn3MdGmlpGfmaDDBOdnGhQTALABOEyvqUYHKss6ZmN4mKevrwntYDV5Ho/upr2Tci3d1LTxUnF3fT12e7mjL0Bn0Fm2/d4nkQPrfJtGl4wBa7MIGwxHqu9VyBQEuLirRL6ZM1awiPtAPvOXPY6prSasX/VVtUUdFz2ZChAx FhXX4vts3XUfz XopenZ6v7i50f0wGICDky4aihWkHUB1df7SnPN5jcLCHnx7/afrfUSiu9VX/W4sbtGi2qTyatVyDQ3W6vepqws2w3nwX7w4RS1udNCP /ZJv0kp27evocAEUsdsbV1cBIJWrSRDaAkNPXUKhMAHr0/rMeqQs7HnNA//xMRBfb7NHpOQnW27pml k3XNmmGXE/ov1BMW0NyCgvhBbztFx0ZEBHkffnJssI1N8o33ke87Nm7MWsUE0JievnsXQHKKM2rs2JTt8SZC4T PBEO1ARNInSDEKsjZWyCYNQtaghodsGkT8YM8CK79NzhCOBxCAFrP7HjD91B0tCB/gvm3vwHodNB/rzfK1ZXtO4Pqh7KRRWHFNyIjLzT 9eWJt2VlTwruXr3/onVrSimt0/bAp23 JT3gIvhOmJA2LdbqQvJvv7F9f orTCC1RLYCXDxPM4KXefIkCEFAZvTpU9ufy FwuRwOQFfrfm37pISF9ds5cvyIJsbGaunqjdROWluzfV9Qw1C o8yx/IeYmNOr92cdzC0vfzn0YedH S1a1FkFrMEZAiilrak5LNi2LXWXxYHs5CVLAB6QB4T5tG/0/8MEomB/rdMYRpaIRgQHw0vSnux0cqrtz 0wozu3q1VU1LBmEyMnXOXz1cWaMeoJdrj/LVIK5eUlf5RpREQc3r3t6fbXHE5k4uuXoSvrcJLICdgCW/74Q9KK3BSVDx ephezJ9g1N5ft 6LqMIEoiFWQk 4Q9d69oYh0gpQzZ2p72m1jicNGR3F6 rStS48uisvP19cx3GTw1s2N7fuA0NfIPZj5JOvXN29 WbDy7JoqC4uckelJGb8r7qz7z6HB4AM iYncC Lm5M9 /T5uSJglFEZFsX0/VBUmEDlZuzhNCfhx0iSYAqPAY98 2EamwEXFz6fX2KvxSHOpSDR5xeJe80hoqEdWy8EtvFq2xNlRSKWpkfkAZWWPz94uvDPy5cuzNnu/P8jz8REflawSl9febEQaT3fQHfn5pIDOpZcGDkyxiI OOPhQ7Zvh6rBBMKQ1VPn4CHDV60iAbCYiJYvr63PacXrsK/dknfvvr097/bse9ravBjeWN4CCwu240eoNlRur xfcSw6emfVslFrVvF4iR/izsR5OzrW1ufR9 BDj1ZUwDzw5YwfMyZ1V wEYVBQENv3QVVgAqkRQqxPOk8IaLptGyyBEGgxZ46iP0HNSb2V2jhKJ6cs DA/MDzcs1ObBa2uNGsG/cAVQPX3ukLoq7wi4wFEotdvQ6yfnA8JOcTd4rJN0LEjDZEIYWgttLg/HQVM9kIFNJ08Obky9rugrUePsn0blB0 kL4KIVZBzk8DHuzaRebAONj1/feK/gQbtabbm/hkZc2fs67X6jnl5Rr2mjGagIPgCAEAFIcX/Vhk ubNhvVzsxa1tLLKN8zNydU1NVX4B7WDAfSMRAJvaQFZMXVqSkxcYND6Q4fYjl9ZYQL5AqtlzmsDvPbsIUfhBDh 952iy/cb37us5 mYmOFeU5pMrLS1JRpwgOhoa7MdN0LKSNJSEkezcnMDh2z8/Wev9PSwlOd/vPD18FD4B32aBgzt6VJyYfLklO1xbYXCw4fZjl/ZKP/unCyxfu 0PCB43Toyi5yG1HnzFFWubJ3GlF0/GC1YHRbW3aZ/UD8zDw/Cg35EXU2N7bgRUmYknRgTvra29x2/WT4LDA01CrTWaBqHhERzQ0PCXyqwxV4EuRBFCLgTJxD16aP70STazT06urg4NzcqGmdtyWAL5F s5zpPEAQsXAhCCKGwebOiytVw02itMZHSxdo/623cGRNjMdF2pvV1XAmOkCJEWr55GNrx7t09m1d/WPewUycaQi8qcqzkr3NLTGG/5Fj//ikuscMuGt 6xXbcbMME8onNDKdOAsGwYfQl0aNDzpxR1AFNulcNcgxOikTLtHcabHVPTdWN1buqhwv8EKoVGREpw1LMb99es3H2wPl5HTtK9MTnJAM0NRX2AfNBBH2Li2kQFYuNO3ZMDYn7cKlfWBjbcbOlwa8fsNnkPGFIsLc3fQ7Tab8jRxSVOPSNDCcZLqiqWt1hb9GOyPR0TBwI1T5zT tz1hndu69fc0jrAH31Su2OxiT1U8XFCvuArcCDq7q6cIMAx H6deu5jjkCgZUV23GzpcEmEMulTQcM72FjI9GhvuBx9SqkkeVwRf7Ba PlZl1M1xQXr2l9YOWeYzk5mue0w7Vb2tiwHS9CDYm veFAg2ofn40uh7sERiUkaBnyI7VbFxUpqnziBhpkmaUl7OJsp7cuXrSjdnQcVWBLR0U0uEF02Yl/ZZNFeaW//PYbWUAekAXyj0UYnDC2M75cXr7qxp6rO6sKC9UGqr9U22dpyXa8CDVkaiPU1dTNLSz8Onwztef0d /ux12fe1OsqysuEN0V6ShgxwgdiIKmVlY0hZtRRU1Ni57mPooOunqV7bjrSoNrgWT8WLI3b/T27TAeKmG2j4 85ekO13 i16SiYmX4nlvbI7OyMHEgpHy0tPgbtMPd3Fbb7nuw81BcnNoWtVtqMxS4K6 QBJGgKVNsNJz3BswfP57teOtKg0kgVjOdjwgCAgIUtRBQY57mPk0bsXjl7D1Xd6anpmrYa8ZoOeIYB0LKTG 44XeGTs2aLZ3zS/AWtfBwYstxJ8MUd2IJ9aLG4LV7t2xXbrbjrW31fhaWzSbnCcMPW1rS83BeJAkPh0ywglvGxkzLkx3QtCJnx4htxyIizM7bCKy1PT3ZjhMhVHORkW8 hs58/Hj37lWz1mX4 iqs4B/gMHi8eaPXiJtG3rZrFzU0aqgwqKqK7XgVrZ63QAiRzIVn1YMOH5Y3cchM2bXEcMHqsDBMHAipPnf3FrbNd/n6Dq7 1mHMNAXuxrsBJsLbFi2KWove0tErVrAdZ22ptwlEus36xInEHkRkyjffyFue75Cek3rMeveuObfN4TYuXl5sx4cQUpzuVoMe9 /avr2nZiu9lo8iIhRW8E7SGI4tXixbLsB2nIpW7xKIHXU7LxCYm9M3MJh L/9KcuuSJlFNzIqLR26bnjipJQ6OI1QvraJPAdTUpnn8uGNxcKNG jmGdobNMzPlLlcIm4DH5VIdmEBCAwMB/Kk/Vfx5QWypdwlENEtcIvnhl1 II5lNZhsaMi1HXV1dXUMDYF7g2tErfygqItdhFuFrabEdH0Ko9nAmcg057czNfwresWLrweRk4kMGw3mJRO6CP3VpWRdkGjXaP3s223EqSr1JIJZ3nVoH6HXtSi7BJrJ 2DB5y5t8f9Gh alv32pp8ZdrWzXclaYINUQ61XpGuh 8vYcnTRk ufDBA4UVvEqSCcErV8om97Adp7zqRQIRCLhczi/EE95t3SpvWS3PdnBqL05M9Fjrndrinrs727EhhNjjN6lXTg DDh0aCxyuOGyPjZW7QCHxBF0dHQmHrhSdWLuW7fjkpfIJxNrFaQp1HD8eXkMITGc uK0xT2OXhoVYPP7u3ISZZpqaeAIgQgjMwBJAQ2OO75oTK86KRGQv5y3nUnW1vMWSZ2Q3vT1unK2ti4tA0KoV22EypbIJRLb3DH1OfqdjVq2St7yJAxYmzD8SFsZroXYRV5IjhP5JQ11rlOYCd/dhz6fsn7j10SO5C3wKl8kIDke8TbKXGq9fz3Z8TKlsAhFd0GxdNnTq1L82NWPI7raDt8PijIxmft75LUqaN2c7LoSQ8up07puJPWa3aWN4q1Eb4 NpafKWR aQ6ZDTo4elprPO4Dnyb61U11QugchaHmQymNMPCxfKW940/o/qi7rk59P9MBhAcQfQIITqH7oNkgB0dGaaLNf9yTkxUVHlcm7AGc6clSvZjq/G9Wa7AjUl9tLMK906eTLwIR7smM O6jCt65ouzWNjDcKMFhkW1f89axBCimOxzKab9UcfH cuzfZ6fBMeLneBY2ABLOjWzbLI5XuBoH17tuP7WiqVQFZQDofegxPUh/k8atmZ5EN1JzUfv7Th7d PEFKAT5NsppxbtHd U8UVy1khWSVZOW8e2 F9dX3ZrsDXsp7rmBM1dMAA4gX7yNamjP/Junj1Nen7IiJCw15LrAm4ey5CiDntIJ21Op2aNWse2qG47emXL UvkVwhSwcNsrV1PDU43N6e7fi RGUSCN1G7krOM295cLkcDpcL0H/FqLXDOzBfoY4QQv82znnG7O891NTkLujT1idiG05fckX Yydqm9InEMsil H7XJyIu3JSXLOz49pOT7veyzsVvL2rVq6eiO1k9bWbMeFEKo/NI9p99eK9fJqFtq6s/ez16/lLY9UgBUxGzfOYafDzl4OGhpsx/c5Sp9ASJJkkyh90iRIgVgIYr6wb0CjUS HHaw/m5ghhJTPsFFTnCZOlX hoez4ifKN3N18r/792Y7rc5Q2gcjOLoeHcB4mjB3LtBznQZ7fuQuTkrSP6c7UtXBxYTsuhFD9Zfy2UbnJ0tatLd/aVdt2SEiQu8CddD80mjSJ7bg R2kTSKZ/SVZ QdeuZAPZRJaYmTEtZ1DsuEljn2ZlsR0PQqj k60nC4iaeHx8VXKyvOWRs Qm3dWtm 1Nl9JB2RYWbMf3b0rbpUN7gjpdIBAQIQD8XPPrtXT5M7VPVFba3nBY0ETs4QHXYRbbMSmzkhJpszsjo7wcACA/X3r8ZlWVWAwAUFkp/YoaBj5f2t2rqSn9amIi7Yc3M9PWBgDg8XCfuP/iutHTy32ClxfPSW2/Wll5uSiuelp1FIPjIGRbntyjOZzRAwZI/3L/frbjk1G6BCLruspcWhKXFz5gAAAwWizYQ2PQzv6vIiLIdbhMfOrfSWA1VVoqEgEAvHyZnQ0A8PZtfj4AQExMQQEAQEFB/TuvGSkehyNNHNbWfD4AgJubgQEAgJeX9Lhod3fpnwlp4AlmMkkhjYyM/MK/Mes 6vHju3G/wfWlzM9cJ2MhFXoLBLAdABPIf0jfUszNO fnxxlLrCCf RnmPho9OnUXflooqHI7zMjv3buiIgCAGzdSUgAAXr/OyQEAqK5WwOE4qMGSSCgFAPj4saTkn19v3pT nhkZSVsqfn7m5gAAPXtKZzzq6ChgiqsK6rZjwJV v/B4d9V/g vyFTWMDPX3t57rNlEgMDJK2R41VCjMy2M7PqUbAyEfYTGcY36Guf5co9aGp4qKdPfplen90nC2KElNLS0FANi8WbqtwsqV0qmEz55Jx38wcaC6kJdXWQkAEByclAQAMGfO06cAAEFBHz4AAFRVNazfQ8P1Jq1N9rZoobWJP0V7iLTVz8in9SGSESJNCbdbN7bjklG BDKdDIXJPXsyvb7rhn5afc5HR0MqLAXgctmOp7aIRNI3wXPnpBu6/fSTdBVsRAT7byUIycjGzi5fliaQJUuePwcAiIyUdp3We5/OE/E/ Y37N4fevpW3OJJH5pC5zJ PiqY0CeSvIx69oC9s8fBgWo73Db/ijjfV1dmOp7bk5FRUAACsXfvmDQDA1asfPwL8nVAQUmbZ2dLf302bwsIAAC5elCYWSuv372 HTl1JZ778L7RkBLjBDEwg/yuZJopvduzIdMGg2hb1u pzRSKDlsaGhgfq33oPWRfVmjXSxCEb40BIFckSxqVL0gSyc2dkJED97Wo1GWa50 yImxvnEHnNvSbHQsNPu5Ary15ZSpNAqBpJkLRjvo2x18s2Bt7x0dHkOswifAbT5ZRUUpJ0kHL1amnikPUxI1SfvHwpneQhSyT1rUVNImALMTYwcJndItnzY1SUvOWJr5EB5GyHDmzHpTSzsOgc8CSjOnQgQkiEJzW/vvV8v7Ud4wsL4SUwXrWuTDIzpesxZIPiZWXSabjov/n4SE nHDXK2RkAwNZWVxcAICZGOoC5b5/0fr57V1hYk3LNzaXTVqdP9/QEAGjdWrq4VUtLObfHKSqSTst 9Uo6iWL3bmmXUV6etAtJWYWG5uYCABw HBMDADBlinQiTH2ZFNxmuX x34z8/KjFryFUnoKWkr7gJEsgJ0 yFQ/rv/xu593OCwLU1QuTxFPpZC8vADAFBluH2Vu6fnS20teHK2xHJB/ZLJVdu6RvYrIHAfpvS5ZI1/osWiT9 u8Hzt JRdq9OW3anTsAAJcv//epco0b6 kBANy6NWgQAICpqWq1bv38pIeujR4tjXvQoKtXAQAiI6UPamX1 HFmJgCAnZ30BeCbb rHBqjOfTzyPEBHBxbLWVA/eprMb9MGrgDj47wVgfUurEJXUW Jk4sLGQmmoFHzwW/ueO4arpZYzBfp6umMdXBgOx55nTgRHw/wd9cV m8tWjRqBPD5xPFvmprSgcwdO/z9AQD09P77d2758rZtAVQvcfxbo0bS u/a1akT23WpiXPn3r0DAEhMLC5muy6KYNDF I7BXkdHMoKzghDmuzuQZeQUtHVzAwAQCNibbcp6AiH9ySySJe0WYMJ6r/2zxkVJSao 9hEbK 1SefAgPZ3tuqiSPn2aNAGoeReHvr50wVvHjv99LHLnzvXjzVdGlnCtrHR02K7L15CNhRw5EhsL8PdCRpW1CsYTI319izs2l23eSmdQMsKDQ6CtpWXZ2XkCAHsvzqwnEBgIcyif bRdJ29PJ48N0u05VJFsNsrRo3Fx0j zXSPVwufLt8JZTY3zn/8HZC2W uZLcSsbWYv8/v368YLlnOI 231XRoa85ZBV5LqkkPnzU15K8EtELWEK8wzqdMJ9hBtPdccJnj XJj/ZNF1UM2/eMHt5kL3JygaZFV2 ssrOlk7OSEpSzWngly9LV7ir iwt5xLPNu5q8k9oIHNpCREwP JbXqwnENqPuJOzjRszvd6qn10728RPe16poGvX5N/yuSELDpaeuRARIZ0G rWOHJFOUkhO/u 9fXrX7wAABCJ6sf6hFWrnj0DUN2Wrmwa 5Mn0kF2VWUlbjKmcYUCnltHaRG4Srtx2cB6AiG7oTGdxDyB8HfrJehPle4AqkpSUqQtjvfv68fgIFtks9Zks4vOnZN2Bf77gS/bUiMwULqdxNKlf/75NeU/fpyWBgAwePC1awAA8fGqtQVHYaH0gbtkSUgIAMCpU9Lpsaru4UPV7srS9TF8qZ mgOfWADIJjtnZsRUHa9N4redazxUItLRACNfpfBMTpuWo91VL5oVbWMAhUKk9oGTTFJFi5OZKuwOmTbt7FwBgzpyHDwH ngaamirtQ5ede1JTjx6lpgIAtGlz9izA3 diWFhI14com4oKacJMTJQmvPq2iaFs0olsax8TE9XqhdDQUX t0cfMDAC84RrzcuhJ2gXsbW3BB46wEQdrCUSirZHILTQx4QCASK/m12sZ8iP53YuKYD2JJ3p6DEpgF256WLsqKqQLL2Nj5dgB9T9kZpaV/fMrqluyLriICOm/b fOynda33/6dF6IpodWf61ZJSUVHcuvlO9kMDMuFKro0E8v4D/WfRjsdWGdJF2rBzFveRhsMtpr9HPtPBxqk wNODkZB80RkldUlOo9A/5Jr7nhRsNA5i TpBKakueyc5Pqfr0 awmEu53XkXOHeQLRtzV0M yueovtZImjvu8 ilBd PhRtV/E9KKNHQy15HiObSNT4CKPZ0ft6ACqr1/X9WctgdBHYhsgzBczGZwzzje0l05JVCXp6djlgZCiZGVJ/z Jxar5QmZoZMQzOib/M6EqkC9UF9R9Vz5rCYSchlSqocFg1ysp7RSdyzo/ybEtMkvy83E3XYQURbYepLhYNdeCaY/h62sfl3 jVG4MAEDdn4PEWgKROJABYMA8YPXm6t px6rezBLZ7BiEkOKUl6vm/yu1QWqn1fvJX3eOZlUGkAaUQEgu9AA95gFzHdWT1J6rXrO1ulr16oyQslPVg6jU72t6ajSS/5kgOg0g6cK8R4cp9sZA5nMeknjm /FwPTgi3lrVexhraKjWHkQIqQINDdXcs4z3E QuqP8zzEe5e3l3K37Z4vKPsw4g8kgtuvAhLIeQISQKtPSUs0EoqrPsb/qz3YFGhpVWzGLkDKTteh1deu /x9hAqlzFhaqe2YJQsrG3Fy6pUx9OfJW1WACqWO2ttK9k1TtPAaElJG9vXSvM8QOfIjVMTU1aV9t06aqt38XQsrGzc3IiO06NGSYQFjSooVs/xqEUE3xeNJOKw8P1TvKoT6pswRis8l5wpBgb2 rIOenAQ9274bRkl8kv2zcyPYNYEuHDqamAAAcDvbeIlRTXl7SFzAdHfmONK4vxNuoDo0RCm2aOv8sECxdanvTpXRQdu3vUFxrU0qtglzXDFF3dCQFkhOk37p1dCWEwEmBgACEAADAHAIN clpYCBd9NO8ufQ/wuvXNTtRD6GGrFMnFdu vZaROVAMzk2aUIBDlK5dS7 lwB23dKm1r/OGgKs7d1ZacJuSY2vXZgujhgqDFLcJrYJbIIRYlTvdHJK6eDFUiqdAYWQkrAQCRCCo6xuqKvr3t7Vluw4IqQo7O kGrLIWCPoMHhwCbS0t ADH4NjixerDxJtpbHi4xQGX0kHZLVsq6mPkTiCykwWtnzhPCIg4e5Y4ktlk9saNZDHxI2OwefklssF0WUsEIfR5AQHS87 x47dmZC0U7gq6lzvu8WPruc7hAsHIkfKWK1cCEQi4XLqG/41kw6lTIIAQWDV0KNs3SlWNGePgAIDTexH6v7RsKT07CF 05CRrmTyBn iQkycti1y H7Jp3DimxTF WFl3cU6l8/btIy4wiywZpNLL8ZWBqal0geHQofb2bNcFIWUhGyQfN87Rke261CspEAtBhJBQepo8Dgy0HOl4anB4t241LabGCcRyv3PqEJt /SAOusDWyZPZvg/1Tc e1tYAf79xIdQQybqopk1zdQUAMDKq 51mGwIyEkxBQ12d/EAGcEKOH7ee63ZeIPj6tTVfPQvLvol9E0GAvn6lD9WnXQ8cACAAdxQYyU7SBk4XFRkTo8OGwvj4RntMnuu3KC/nDeDq8Pz d7dKt2Ou85vs43AAYE6t3uE6JvuP8/33bm4AAOvXh4YCALx7V1TEdt0QqivDhzdtCgDg5VW/Fwq6Udf5TZZxOAmL3c45TH/06N/fF10Wl4geEpI3s0BQFKqhkXMx2y6fb28vuSPJpycU151HepFWcMfCAlzE1vTHHTsAAEA4ZswXr/vaD7Ce6zxBELBwIQghhMLmzfJWmDefu4brn5o6c XMmBH3PnwY3WEE6b3G21vtlPp8Nbcvv21kZkqnoiUk5OYq6iYqo8JC6amL69e/eQMAkJaGR Ki qt/fzs7AACBQDpYXt85OEiTgJnZ1x3vLb4njpGUi8W/r7/d7s9Vb96sSl/9Yn9bHZ0yTvnQytMuLnJXyBqcIYBSTmdxN3LBw PjhoRZQmFU1Od /Cu6sPypP Xx4AN0lSyfOVPe jUyMrE12Pby5aMP92yPpunpjX8/bsGACz4 X5s4Ghp9fWkf8LJlLVoAADg44N4/qP4gRNrmHjVKOomkoSQOpriduS4cLS631 1vCnw3ens//uFRwa dHRzcHd3OOdz/3xZMjX0aGxGncowkExcu/NKPf7EFYuXk9Ewg6NKFlJGxlN5h3Gmlu0l3Lb9NePj9k3/EHOzj7CxvwmgoLZB/q6qSnrx26lRCAgDA3btpaWzXCaGa0tWVvhhNnSod46jvXVWfU9MWyOfQHFpCxZT21RrQbZbxs2fJ7ZMrM7q3a8e4vPfgQ49WVJBFpfqcCUZGKdtTtguF5eX//rmvGkSX6HfpwjgyEUyCsvLyc2vPzNlsYWKCLQ35qKtLp/mOH /kBAAwa5a7O8DfK9sRUmatWkknh6xb5 0N0HATh6IRE6JDuISc9Tz13UZvV1eSB6fgVH4 4/KaQAgZr6lJQnWe0ScdO37u576cQGIhCQ76 jKtSKtlLYa43XzxwjrEKt50tKVlrd/JBqZ160aNAAA2b27dGgCgXz/pynZNTdU8oQ3VL40bS9 sFy709AQAmDPHwwMAwNAQX3hqg26i7lj H/r6fhZ Bi31wsLkLY82p/vpkM6dP/f9LyeQPJIGT6VTS5mYoPat6YDHuGNmbZMdlStbR7J9e/v2AADDhkn/bGEhPXgHodogWwDr7S1tYSxc2KwZAMCaNdKWRrNmuACwLo2MHXG0zzv5lwLQn2g5DP/8dktfnMZLjsMuEmtq jU/ 3/x1Gk 3mmgjQ0A/AqZtXnL0D/p6EgTSt 0n982dekJOnYUWSktHkbHV1QAACQmlpaCgCQk1NZCQBA6f9OnUYNl zoWNkJgLIteFxdDQ0BADw9pV/5fF6tbdCKvp7rebc4 5ZWVgAA4Me8HCIkV8kpM7PPff/L/9hbgQdXmc/80ffW3cNPwxaIspBtRif72ru3jc0/v19dLR2kLy6WTh uqBCJAAAqK6V/jxoGbW1pItDUlH6VzQZEquEfz92OMJx5OZRLp8MZAwMAWPN/fb/W3xZkgzu1/TlIMWRdEX v/MW aoRUTV09d3HjPoQQQoxgAkEIIcQIJhCEEEKMYAJBCCHECCYQhBBCjGACQQghxAgmEIQQQoxgAkEIIcQIJhCEEEKMYAJBCCHECCYQhBBCjGACQQghxAgmEIQQQox8OYHMo4EwWLqlNxOiU IX4gLm1yOEEKoZ0S iW Jc6ZEM8iBbyROY vnn9xcTCNWAd7RNbi7TCmQPyJYU2OTk1N6tQggh9E8ZwvR OQeys UuqBc40lmff35/uQXSHNTJeeYJ4N6re Lnnd6/r60bhRBC6P93y 927xDL1FR5y6GW1IAMz8r63Pe/mEBIEHxDB0RHM63AsY3Hi6405XJr71YhhBD6pxOap5JuTGZ kqwMSSMricnnn/9fboF0g1GQfv8 0wpkkIxjOe1bt36cFjI3lISH19YNQwihhu7s3nNat5JjY/Mu5EHBQBcXecsj5gCS0ffufe77X0wg4hSwg0V37jCuQQrEQhAhM1vNvrZhjqlpekj6xuy49PRau4MIIdTAhBmGv4sbn5m54c7Ga4fu29jIXaAAfCAjOzt5cewRzqk3bz73Y19MIOlT4wIvvI6Jocl0DRU eMC0PuJGYr4kxdy8d0C/IzP2ERLSLSQktGNERK3dUYQQqufOHDjX9Fb76OixXcYlLe2iq0vjYT5c0daWt1zaGADm7N8PACAUisWf zne1xZILDjZpM/OncCjANr /kwrJksk09Vn7Fo3w8zMytrqranfs2djvcaU9LtBaacf/apbpdrZNXrRqIWRsYkJbw6vJ9dYTU2xtx0hhJSfbDpuRmLGkpzfcnJuLrq19893ycknYk/du2qoo5O/J1 vyNrNDQDmwxX5P4 Bx96tKKCx N w5mwdy/MhiP/9fOkJoWvoByO1Q7nCZFqDx6QnyEEBvr6snVjB5qPfjUy7tGjnisCkgeFdezIVj0QQoipW6uCbC55PXoUnHGy1WknJXiOvQAjGLhsWYpF7JOg0WvXfunHa7QSfRWRSMTTJCbcyVOm0IdgBAMrK9mOFyGEkJz0gQ9e4eFmfXQqjR5s2vS1l9V4K5MMjfjN5/ZFR5Pe1BOiZsxgO26EEELM0P30OKRmZBBT8bfcLoMHv3r96nXgwa9fwc54L6yUmLjAoPWHDoE1dYSAlSvZvhEIIYS Dr0DP0LvggJaRrcQ6169ku8lzDrn8 5dTcuRezPFlKdxV4OGr1pFVxBCyNSpdBN9SE/IvwcLQgghBfOmT isuDhxY0kk90WHDmlD44VCYWgo0 IUthtv6uSYGKEwMJC85NzijO3eHQrpDIhMSKit yDeJxkhac/B3YQRQiqr1p9j7WAAPSORQDn8BOmHDml2kZzUFLZuLRuKkLd4hVc8ZXvMWKHwwQMzR92jRr5ubmAEf0K7WbOgEQyCTikpivqcip/KeWXOvK ehowQQsqmdEHJ xIjBS5TkCUMT5gPG69flwyVvOeMbNUqJTd2TFDI5MkJsxJmndpVVKSoj6u1zCcbjEkJjzUOWrBrV8qb2I3u39vZSXIgVWLt60svwXBYGxzMtPysnekXM/sYGNRW/RFCqLblGGeoZ4yT/zlGb9BX1OnnnyXOoli1Po0bp9yInRLk0KePvF1UX1KnXUCriESSVhFbcvGXkBC6XeIkqdqzh2lZHxsnbE/Yr4Al wghxJKkCQna7z2ZP8foaciCyqoqnkclX2fd8uVp695dPvt7cnJd1Z 1MQTJDN4peBgfz/T6/KY5B3KTtbUrLCt8ylM/fmQrDoQQqqmyVmWnyoQfPhROy8vOHaClxbggEahD8/DwJJJEfiUVFXUdB2sJJKND9PWLM5KS6A36Croy31wxYtjznq9W5eWxFQdCCNVUeMizSS 6FBTIXdA0eoWm37rFVhysz2Iiz0hL OPxY6bX//HNZc5vu zt4TeIBqCU7XgQQuizPj2n7i646nFtRdOm8hZHX3KOcwqvXWMrHNYTCD1Kq8Di6lWm138MfvcycbSeXpLfu9B3B5l3iSGEUG17/zG2R7x/fHyy J3V 0zmBz7RYPABn8TENL2YPW7nnz1jKx7WE4jWMMk8DRIcLNsFkmk5Ryu27dwZa2dHn8JoWvX5Q ARQqiuyZ5Lx/ruMNnlYWcnd4HudCgdGhgIIJ2cxFZcrCcQ2bxkEkZ5JPbcOablZK5MNUtL0tC4vf/imOAQBRwmjxBCCnKrf5BbsH5mZtbGNLv0LA0NxgUJaAQUl5RIjsNF9auHD7MdF sJ5C nyAyycetWsAZnCGA lhGsfWL/mX0WFjF YVsiluHsLIQQe2JPR0REtklNvRJw6sWZflZWchfYFnzgya5d6VPjAs9MzclhOz6lSSAp22ObCYMiImA7mIC7UMi0HEoppRRgb/P1LzYm2tp uBy/O35wRgbb8SGEGo73e J iB ckbHn6dq16x2trGTPJaboD3Qx3ZiZyR1W by6cPNmtuOTUZoEIsNtB4e5HosXyzsmUl1dWVlVBfDz70vu/aRmbv7g0Q3xrT1ZWWzHhxCqv570vzPg3omcnC1RP8T9pGZuLnsOyc0PhsKRBQuSSBK5TBQw/VdBuGxX4N8KV WuilxVUGBw1bjaI6G8HMqIBKBnT6blyTL/24hX519/4POTdRIF74lI5PStx2B3jaIizQ9aw7WMNDXZjhshpHqKkgpWF5zNyTkyYWv Lx95vN8tLoVdOaerK2 L4y EDgbexYupG N6X9j3009sx/s/1WO7Av9lBeVwrO85/xaZdOsWjIEFsKBbN0WVzeVyOFwugO/bnpe6DS8r62Y sKL/7LIyk1FmiaZJxsbQD1wBiFLfH4RQHfm0fiNrWwY/UzM394 MS5pXDmtr/9n19rQ7v2lri8USiVisuI TTdPlDlZ/of7C2/vjx4iI06fz89m Df m9A9I67lu5wUCIyM4JMqkb589A32yG9wdHGrr8wwNTUyMjQG8RrZNbpNaVdV0iauP643Cwkbl5qvNnkgk2kL Su2mHA75jrOQ0wITDEL1Ad0r VnyhtIyQenKsncSSfby9LcZ47ncBJ3oadGWenrhF547vLBXV8/Pz8nJza3FilTS25CTlydeC2tpkY9P tS4wAuvY2LYvj fozIPQKsg1zVD1B0doYfkMITdv0/cQIMss7Rku14IISQvuhqc6N6iIvoOZkBRr15p62J7XnD480 26/UlKpNAZCw7O08QCJydOQVgSv3/ AOy4RLct7Zmu14IIVRjn1ocNIaOpBt69041jn98oT17K8trSuUSiIztTZfSQdkWFpK dD23aXAwmEMQ9GjThu16IYTQFwmgFMJiYyWh0IM0HzAg7V7sEaEwNpbtatWU0s3C lqFJ3PWx/xcUmIo1nnYuuLkSdqHZ1ptxOfDXUiDJu3aQRHkQhSOUSCElIBsgfRZ hh6HDhQfVJTonU8ICDjTtTmMy Y70bOtnr3gLVOd3QdvNvPDzZzvuOs3bEDhLAbfJs3Z7teCKEGSB/44BUeLtlFufDzvHlpXeJeBBXducN2tRSl3iWQf1pBORyrCKeSt0tHjiRLySwyd8ECeA0hMN3Li 26IYTqoU8JgxrQPMjcujU1JO4DyTx1CgBAKFTkRF/lUK8TyP9F1kKhUzlmRGf4cJhCN5EDgwaRaWQsWJmbs10/hJDyo/vpcUjNyIBAsphOvXSJNCUTONfOnUvZHjNWKHz48NNP1fvziRpcAvkc80rHRcOmu7ryHnJuipq1bw99QZ scHaG7 gles/eHvqTJ4RvYEDtYS9o6uvD7/QwuHOUbisYhBADPchEiJRISCJ8BxWFhXCFtqelBQWwlwwinRMT4SoU0lWxseJE2g4O/vmnsq/PQAghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBCS2/8DL55Fx5Txw3wAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMTItMjZUMTY6MTg6NDgrMDg6MDDfzhB2AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTEyLTI2VDE2OjE4OjQ4KzA4OjAwrpOoygAAAFd0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fMDVkamhtZ2pmZGVkL3poaW5lbmdqaXFpcmVubW9iYW4uc3ZnIuXHZwAAAABJRU5ErkJggg background-repeat: no-repeat; background-position: center; background-size: 100%;}.chatinput-content { width: 100%; height: 92rpx; box-sizing: border-box; padding: 0 24rpx;}.chatinput-inputOut { width: 490rpx; height: 60rpx; position: relative; box-sizing: border-box; padding-left: 20rpx; padding-right: 20rpx; background: #f0f0f0; border-radius: 60rpx;}.chatinput-inputmask { width: 490rpx; height: 60rpx; position: absolute; left: 0; top: 0; border-radius: 60rpx; z-index: 2;}.chatinput-input { width: 100%; height: 60rpx; border-radius: 60rpx; border: none; display: inline-block; vertical-align: top; font-size: 28rpx; color: #212121; background: #f0f0f0;}.chatinput-sendOut { width: 90rpx; height: 60rpx; position: relative;}.chatinput-sendmask { width: 90rpx; height: 60rpx; position: absolute; left: 0; top: 0; border-radius: 60rpx; color: #fff; background: #d0d0d0; line-height: 60rpx; font-size: 26rpx;}.chatinput-send { width: 90rpx; height: 60rpx; line-height: 60rpx; text-align: center; border-radius: 60rpx; color: #fff; font-size: 26rpx; background-color: orange;}.flex { display: flex;}.alignC { align-items: center;}.flexSb { justify-content: space-between;}.self .record-chatting-item-text { background: #38adfa; margin-right: 20rpx; margin-left: 0;}.mb16{ margin-bottom: 16rpx;}.record-wrapper{ padding-bottom: 122rpx;}

3.3 js

var app getApp();Page({ /** * 页面的初始数据 */ data: { // 输入框的值 inputValue: , // 当前聊天数据的列表的index current_index: 0, // 数据列表 current_list: [], // 缓存最多存的消息条数 max_length: 5, // 是否聚焦 input_flag: false, // 城市 mycity: bj }, /** * 生命周期函数--监听页面显示 */ onShow: function() { var that this; // 首先从缓存中拿缓存的值 若有 则优先渲染 that.getRecord(); }, // 获取缓存记录 getRecord() { var that this; var current_list that.data.current_list; var key_time my that.data.mycity time var key_list my that.data.mycity list // 初始化 var myRecord_time (wx.getStorageSync(key_time) undefined || wx.getStorageSync(key_time) ) ? : wx.getStorageSync(key_time); var myRecord_list (wx.getStorageSync(key_list) undefined || wx.getStorageSync(key_list) ) ? : wx.getStorageSync(key_list); if (myRecord_time myRecord_list.length) { console.log(myRecord_list) that.setData({ current_list: myRecord_list, current_index: myRecord_list.length }, function() { that.scrollToBottom(); }); } }, // 创建缓存记录 setRecord(par_kind, par_list) { var that this; var current_list that.data.current_list; var key_time my that.data.mycity time var key_list my that.data.mycity list // 初始化 var myRecord_time (wx.getStorageSync(key_time) undefined || wx.getStorageSync(key_time) ) ? : wx.getStorageSync(key_time); var myRecord_list (wx.getStorageSync(key_list) undefined || wx.getStorageSync(key_list) ) ? [] : wx.getStorageSync(key_list); if (!myRecord_time) { wx.setStorage({ key: key_time, data: myRecord_time, }); } if (!myRecord_list) { wx.setStorage({ key: key_list, data: [], }); } myRecord_time wx.getStorageSync(key_time); // 如果缓存中没有时间 或者 和今天的截止时间不一致时 须把今天的截止日期赋给它 同时发送默认消息 同时把截止日赋值给缓存 同时发送默认消息 同时把默认消息开关设置为true if (myRecord_time ) { myRecord_time get_endtime(); // 用最新的覆盖 wx.setStorage({ key: key_time, data: myRecord_time, }); } // 列表(将获取到的数据从头部添加 相当于最新的) var listdata { kind : par_kind, list_ul : par_list }; if (par_kind par_list) { myRecord_list.push(listdata) } // 如果超过最大长度 需要截断 if (myRecord_list.length that.data.max_length) { myRecord_list.splice(0, 1) } wx.setStorage({ key: key_list, data: myRecord_list, }); }, // 改变消息列表 change_list(par_kind, par_list) { var that this; var current_index that.data.current_index; var data_key current_list[ that.data.current_index ] var listdata { kind : par_kind, list_ul : par_list }; that.setData({ current_index: current_index 1, [data_key]: listdata, }); if (par_kind me ) { that.setData({ inputValue: }); } }, /** * 文本框输入事件 */ inputChange(e) { var that this; that.setData({ inputValue: e.detail.value, }); }, // 发送消息 inputSend() { var that this; var inputValue that.data.inputValue; if (inputValue) { var param { city: that.data.mycity, keyword: inputValue, } // 创建记录 往上滚动 that.scroll_record_list( me , inputValue); // 搜索结果 var num_arr [ 你好哇 , 我是元气满满的萌妹子 , 你问这个干什么 , 尼古拉·阿列克谢耶维奇·奥斯特洛夫斯基 , 我在你的内心深处 var num Math.floor(Math.random() * 5); console.log(num) if (num ! 6) { that.scroll_record_list( you , num_arr[num]); } else { that.scroll_record_list( you , 没有搜索到 inputValue 相关内容 } } }, // 聚焦 失焦 inputFocus(e) { var that this; that.setData({ input_flag: true }); }, inputBlue() { var that this; that.setData({ input_flag: false }); }, // 创建记录 同时页面往上滚动 scroll_record_list(par_kind, par_list) { var that this; // 改变消息列表 that.change_list(par_kind, par_list); // 创建记录 that.setRecord(par_kind, par_list); // 往上滚动 that.scrollToBottom(); }, /** * 滚动页面到底部 */ scrollToBottom() { wx.pageScrollTo({ scrollTop: 999999, duration: 100 }); },})// 获取当日23 59 59时间function get_endtime() { var time_end new Date(new Date(new Date().toLocaleDateString()).getTime() 24 * 60 * 60 * 1000 - 1); var time_format format_date(time_end) return time_format;}// 获取当前时间的 年月日时分秒 的时间格式化 20191220100246function format_date(now) { var year now.getFullYear(); //年 var month now.getMonth() //月 var day now.getDate(); //日 var hh now.getHours(); //时 var mm now.getMinutes(); //分 var ss now.getSeconds(); //秒 var clock year if (month 10) { clock 0 } clock month if (day 10) { clock 0 } clock day if (hh 10) { clock 0 } clock hh if (mm 10) { clock 0 } clock mm; if (ss 10) { clock 0 } clock ss; return clock;}

4.效果

\"\"

 

5.说明

5.1 最好封装一个滚动函数 每次发送消息或者每次一进入页面从缓存中读取数据并赋值给当前渲染的数组以后页面就会渲染更新 此时也需要将页面滚动到最底部才比较合理 封装滚动函数后在这两个地方可直接调用就好了

5.2 键盘需要做一个底部悬浮 但你会发现 position:fixed;bottom:0 当键盘弹起后 键盘会贴着input的底框框 此时需要做一个聚焦和失焦的处理 聚焦 也就是键盘弹起后给以margin-bottom 失焦的时候再把底部的margin-bottom去掉即可

5.3 最开始我还想过通过index做键值的方式对消息缓存更新 后来感觉会有问题 index不靠谱 会出现重复 如果我发了二十条 有一个index二十 明天只取十条 我明天再发到第二十条的index就和之前的index值一样了 这条可忽略

5.4 对于键盘弹起的问题 如果页面消息比较少会存在键盘把消息顶上去的情况 其实对于顶的情况 微信和QQ都是默认让顶的 这样每次都能保证在输入框聚焦的时候 能看到最后一条消息 这也时合理的 。如果你有特别的需要 你们公司产品不让顶上去 可以参考 思路 键盘固定 聚焦也固定 当消息比较多的时候 会挡住最后几条 。其实对于需要顶或者不顶各有优劣吧 根据自己需求取舍。

本文链接: http://dfxsszz.immuno-online.com/view-735134.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616
官网:http://